나는 VBScript 파일을 실행하기 위해 CScript를 사용하고 있으며 매개 변수에 공백과 따옴표가 모두 포함 된 명령 줄을 스크립트에 전달해야합니다. 전체 명령을 하나의 매개 변수로 스크립트에 전달해야합니다. 예를 들면 다음과 같습니다 (즉 cmd.exe를 실행 포함하는 명령 줄을 통과)공백과 따옴표가있는 명령을 단일 매개 변수로 CScript에 전달하는 방법은 무엇입니까?
C:\> CScript myscript.vbs //Nologo "cmd.exe /c "dir && del /q *.txt""
참고 특정 명령 라인은 위의 예에 불과하지만, 내가 할 노력하고있어에 터치를한다. 그러나 나는 일반적인 경우를 해결하려고 노력하고있다.
CScript가 따옴표를 열고 닫는 위치를 결정하려고 혼란스러워하고있는 것 같습니다. 가끔은.
다음 스크립트는 설명에 도움이 될 수 있습니다.
C:\> cscript myscript.vbs //Nologo "1 2 3"
0 = 1 2 3
을하지만 인용 매개 변수 안에 따옴표가있을 때 상황이 변경 :
종종Dim count
For count = 0 To WScript.Arguments.Count-1
WScript.Echo CStr(count) & " = " & WScript.Arguments.Item(count)
Next
번 예상대로 작동 : 그것은 그들을보고 그것은 단지 인수로 전달에 출력
C:\> cscript myscript.vbs //Nologo "1 "2 3""
0 = 1 2
1 = 3
위의 예제에서 매개 변수를 열거 나 닫을 때마다 모호한 점이 있다는 것을 알고 있습니다. 따라서 내부 인용 부호를 이스케이프하여 D 프로세서는 리터럴 문자열로 취급하므로 :
C:\> cscript myscript.vbs //Nologo "1 ^"2 3^""
0 = 1 ^2
1 = 3
는 흠, 쉘이 당신을 위해 대체 (globbing)을 수행하고 같은 경우에만 작동 같은 것으로 보인다. 나는 cscript가 ^
을 cmd.exe와 같은 이스케이프 문자로 인식하는지 의심 스럽다. 이중 인용 명령 안에 작은 따옴표를 사용
(예 : "cmd.exe를/C 'DIR & \가 & CD'") 제대로 하나의 매개 변수로 구문 분석하지만, 호출 cmd.exe를의 경우에 때문에 작동하지 않습니다/c 매개 변수를 사용하면 작은 따옴표로는 충분하지 않습니다. 예를 들어 :
C:\> cmd /c 'dir && cd \'
''dir' is not recognized as an internal or external command,
operable program or batch file.
난 그냥 스크립트의 모든 인수를 반복하고 다시 하나의 긴 문자열로 그들과 합류 할 수 생각하지만, 나는 그들이 그 일을 제공 내부 시세 및 컨텍스트를 잃게됩니다. 또는 이중 따옴표 붙은 param 내부에 작은 따옴표를 사용하고 스크립트 내에서 큰 따옴표로 다시 매핑 할 수도 있습니다. 그러나 만약 의도가 이라면 향후 사례에 대한 작은 따옴표는 고려하지 않았습니까? 나는 일반적인 경우를 풀려고하기 때문에 그 결정을 내릴 수는 없다.
아이디어가 있으십니까?
이 질문을보십시오 : [VBScript 인수의 이중 따옴표] (http://stackoverflow.com/questions/4192376/double-quotes-in-vbscript-argument). 어쩌면 도움이 될만한 답이있을 것입니다. –
감사합니다. 나는 한번 살펴 보겠다. WMI에서 명령 줄을 얻는 것이 효과가있을 수 있습니다. –