Показать полную графическую версию : [решено] изменить несколько строк в файле
так пойдёт?
корень всего - каталог autoinstall
megaloman
26-06-2018, 15:55
man8531, Я ориентировался на Ваш код - скрипт расположен в той же папке, что и папка other.
Если скрипт и папка other расположены на одном диске (причём имя и вложенность папки не имеет значения), то для пути
Диск:\other\openvpn\conf\client.ovpn
замените строку
FileIn = FSO.GetDriveName(WScript.ScriptFullName) + "\other\openvpn\conf\client.ovpn"
корень всего - каталог autoinstall » Или, если я правильно понял, так
FileIn = FSO.GetDriveName(WScript.ScriptFullName) + "\autoinstall\other\openvpn\conf\client.ovpn"
megaloman,
не помогает, говорит, что не найден путь до переменной FileIn
наверное, я делаю что-то не так или некорректно объясняю: мой каталог установки (autoinstall), будет располагаться где угодно - рабочий стол, папка загрузок и тд. в батниках я использую переменную %~dp0 для обозначения исходной папки, откуда всё запускается. у меня один большой батник, который производит установку программ и конфигурирует некоторые конфиги с помошью доп батников или скриптов, вроде Вашего. так вот, сейчас я поместил в главный батник, что лежит в корне каталога autoinstall, строку:
%~dp0script\openvpn_Ethernet.vbs
он, с админскими правами, запускает Ваш скрипт, что лежит в каталоге \autoinstall\script\openvpn_Ethernet.vbs
сам каталог autoinstall сейчас находится на рабочем столе.
наверное, в этом случае придётся ложить конфиги в папку script. потому, как я понял, головным каталогом скрипт распознаёт script
в этом виде он отрабатывает всё без проблем, если конфиг опенвпн поместить в каталог script
Set FSO = CreateObject("Scripting.FileSystemObject")
FileIn = FSO.GetParentFolderName(WScript.ScriptFullName) + "\openvpn\conf\client.ovpn"
FileOut = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%PROGRAMFILES%") + "\OpenVPN\config\client.ovpn"
' MsgBox FileIn + vbCrLf + FileOut
ComputerName = CreateObject("WScript.Network").ComputerName
Dim What(2), Rep(2)
What(0) = "ipaddress"
What(1) = "user.crt"
What(2) = "user.key"
Rep(0) = "192.168.0.1 1194"
Rep(1) = ComputerName + ".crt"
Rep(2) = ComputerName + ".key"
' MsgBox What(0) + vbTab + Rep(0) + vbCrLf + What(1) + vbTab + Rep(1) + vbCrLf + What(2) + vbTab + Rep(2)
Set fIn = FSO.OpenTextFile(FileIn, 1, False) ', -2)
Alls = fIn.ReadAll
fIn.Close
For i = 0 To UBound(What)
Alls = Replace(Alls, What(i), Rep(i))
Next
Set fIn = FSO.CreateTextFile(FileOut, True)
fIn.Write Alls
fIn.Close
megaloman
26-06-2018, 17:47
мой каталог установки (autoinstall), » Я не понимаю, как соотносится каталог autoinstall с каталогом other и каталогом Script. Из той картинки ничего не понятно. Там autoinstall нет вообще.
Кстати, а наверное необходимо писАть путь в кавычках, в любом случае они не мешают.
"%~dp0script\openvpn_Ethernet.vbs"
Из той картинки ничего не понятно. Там autoinstall нет вообще. »
моя оплошность. прикладываю более полную картинку. но я писал, что: корень всего - каталог autoinstall. а сам он может располагаться где угодно.
Кстати, а наверное необходимо писАть путь в кавычках, в любом случае они не мешают. »
по правилам хорошего тона - да. но эти кавычки добавляют лишний слэш иногда, вот и не ставлю их периодически. там и пробелов в пути нет.
megaloman
26-06-2018, 18:56
man8531, Я слегка запутался, иду по пути наименьшего сопротивления:
Батник:@Echo Off
Set "infile=%~dp0other\openvpn\conf\client.ovpn"
Set "infileout=%ProgramFiles%\OpenVPN\config\client.ovpn"
"%~dp0script\openvpn_Ethernet.vbs" "%infile%" "%infileout%"
.vbsWith WScript.Arguments
If .Count < 2 Then WScript.Quit 1
FileIn = .Item(0)
FileOut = .Item(1)
End With
' MsgBox FileIn + vbCrLf + FileOut
ComputerName = CreateObject("WScript.Network").ComputerName
Dim What(2), Rep(2)
What(0) = "ipaddress"
What(1) = "user.crt"
What(2) = "user.Key"
Rep(0) = "192.168.0.1 1194"
Rep(1) = ComputerName + ".crt"
Rep(2) = ComputerName + ".key"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fIn = FSO.OpenTextFile(FileIn, 1, False) ', -2)
Alls = fIn.ReadAll
fIn.Close
For i = 0 To UBound(What)
Alls = Replace(Alls, What(i), Rep(i))
Next
Set fIn = FSO.CreateTextFile(FileOut, True)
fIn.Write Alls
fIn.Close
WScript.Quit 0Если не поленюсь, напишу батник скомбинированный с .js, чтобы не иметь отдельный файл со скриптом.
megaloman,
если всё сложно, то и не стоит оно того. я, думал, что пару символов добавил и всё, а тут симбиоз уже намечается какой-то.
upd
в общем решил вопрос двумя шаблонами, которые будут копироваться в каталог программы, в зависимости от потребности. а остальные два параметра руками потом поправлю.
upd
а лучше, чтобы труды не пропали, размещу конфиги в папке со скриптами, там они будут их отрабатывать.
upd
положил - всё отлично отрабатывают! спасибо!
megaloman, можно просто использовать относительный путь — из script вверх, в родительский каталог, а затем вниз к other и т.д.:
FileIn = FSO.GetParentFolderName(WScript.ScriptFullName) + "\..\other\openvpn\conf\client.ovpn"
Я не проверял, но должно работать.
megaloman
26-06-2018, 23:50
man8531, @set @E=1; /*
@Echo Off
Set "infile=%~dp0other\openvpn\conf\client.ovpn"
Set "infileout=%ProgramFiles%\OpenVPN\config\client.ovpn"
cscript //NoLogo /E:jscript "%~dpnx0" "%infile%" "%infileout%"
GoTo :Eof
*/
var oArg = WScript.Arguments;
var FSO = WScript.CreateObject("Scripting.FileSystemObject");
var FileIn = oArg(0);
var FileOut = oArg(1);
var ComputerName = WScript.CreateObject("WScript.Network").ComputerName;
var What = new Array(2);
var Rep = new Array(2);
What[0] = "ipaddress";
What[1] = "user.crt";
What[2] = "user.key";
Rep[0] = "192.168.0.1 1194";
Rep[1] = ComputerName + ".crt";
Rep[2] = ComputerName + ".key";
var fIn = FSO.OpenTextFile(FileIn, 1, false);
var Alls = fIn.ReadAll();
fIn.Close();
for (i=0; i<What.length; i++) {Alls = Alls.replace(What[i],Rep[i]);}
fIn = FSO.CreateTextFile(FileOut, true);
fIn.Write(Alls);
fIn.Close();
WScript.Quit(0);Iska, Спасибо, непременно попробую разобраться.
FileIn = FSO.GetParentFolderName(WScript.ScriptFullName) + "\..\other\openvpn\conf\client.ovpn" »
это ключ к решению проблемы с каталогом script - всё заработало как и задумано. спасибо всем большое!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC