2016-09-20 2 views
1

Я хочу создать файл bat с заданными переменными из другого файла bat. Это файл запуска .bat, который отображает сетевые диски и копирует некоторые файлы на локальный компьютер и просматривает системные службы, которые необходимо запустить.Создайте файл bat с переменными из другого файла bat

Он также должен создавать файл журнала каждый раз, когда запускается файл .bat для входа в систему. Вот пример того, что я сделал.

ECHO set SERVER IP=>>"V:\GENESIS\GENESIS INSTALL FILES\GenesisLogonUser.bat" 
ECHO set DRIVE1=V>>"V:\GENESIS\GENESIS INSTALL FILES\GenesisLogonUser.bat" 
ECHO set MAPDRIVE1=\\%SERVER IP%\v /P:Yes>>"V:\GENESIS\GENESIS INSTALL FILES\GenesisLogonUser.bat" 
ECHO net use %DRIVE1%: %MAPDRIVE1% >>"%userprofile%\Documents\scripts\logonlog.txt">>"V:\GENESIS\GENESIS INSTALL FILES\GenesisLogonUser.bat" 

ответ

2

Вам необходимо избегать процентного расширения переменных. Это может быть сделано путем удвоения каждого % знака в пакетном сценарии:

set "VAR=Value" 
echo %%VAR%% 

Это эхо:

%VAR% 

Обратите внимание, что это не работает непосредственно в окне консоли; Вы должны это сделать, как это вместо:

>set "VAR=Value" 

>echo ^%VAR^% 
%VAR% 

Так, чтобы применить это к вашему сценарию, это выглядит следующим образом (я исключил %USERPROFILE% от побега, как я не знаю, как вам это нравится, конечно вы могли бы написать %%USERPROFILE%% вместо а):

(
    ECHO set "SERVER IP=" 
    ECHO set "DRIVE1=V" 
    ECHO set "MAPDRIVE1=\\%%SERVER IP%%\v /P:Yes" 
    ECHO net use %%DRIVE1%%: %%MAPDRIVE1%%^>^>"%USERPROFILE%\Documents\scripts\logonlog.txt" 
) > "V:\GENESIS\GENESIS INSTALL FILES\GenesisLogonUser.bat" 

поскольку некоторые перенаправление в отражаемый тексте, это должно быть экранированы, как ^>^>.

Я также ввел все команды ECHO в круглые скобки, для чего требуется только одна операция перенаправления; это улучшает читаемость и производительность.

Кроме того, я улучшил синтаксис set, так что все выражение присваивания расположено между парой кавычек, что делает его надежным по отношению к специальным символам (кавычки не становятся частью значения).

+0

привет там хорошо круто спасибо u похоже, что это сделал трюк – ReaperMaxer

Смежные вопросы