2016-09-20 6 views
1

다른 박쥐 파일에서 설정된 변수로 박쥐 파일을 만들고 싶습니다. 네트워크 드라이브를 매핑하고 일부 파일을 로컬 컴퓨터에 복사하고 실행해야하는 시스템 서비스를 확인하는 시작 .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 명령을 괄호 안에 넣습니다. 단 하나의 리디렉션 작업 만 필요합니다. 이는 가독성과 성능을 향상시킵니다.

또한 전체 할당식이 특수 문자에 견고하게 만드는 따옴표 쌍 사이에 배치되도록 구문을 개선했습니다. 따옴표는 값의 일부가되지 않습니다.

+0

안녕하세요. ok 멋지다. 트릭을 한 것처럼 보입니다. – ReaperMaxer