PDA

Показать полную графическую версию : [решено] изменить несколько строк в файле


Страниц : 1 [2]

man8531
26-06-2018, 14:40
так пойдёт?
корень всего - каталог 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"

man8531
26-06-2018, 16:39
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"

man8531
26-06-2018, 18:48
Из той картинки ничего не понятно. Там 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, чтобы не иметь отдельный файл со скриптом.

man8531
26-06-2018, 19:36
megaloman,
если всё сложно, то и не стоит оно того. я, думал, что пару символов добавил и всё, а тут симбиоз уже намечается какой-то.

upd
в общем решил вопрос двумя шаблонами, которые будут копироваться в каталог программы, в зависимости от потребности. а остальные два параметра руками потом поправлю.

upd
а лучше, чтобы труды не пропали, размещу конфиги в папке со скриптами, там они будут их отрабатывать.

upd
положил - всё отлично отрабатывают! спасибо!

Iska
26-06-2018, 22:54
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, Спасибо, непременно попробую разобраться.

man8531
27-06-2018, 06:27
FileIn = FSO.GetParentFolderName(WScript.ScriptFullName) + "\..\other\openvpn\conf\client.ovpn" »
это ключ к решению проблемы с каталогом script - всё заработало как и задумано. спасибо всем большое!




© OSzone.net 2001-2012