일부 배경 : 내 레일 환경에서 나는 자바 스크립트 파일을 실행하기 위해 Windows 스크립트 호스트를 사용 ExecJS를 사용 커피 스크립트을 사용하고 있습니다.cscript.exe와 함께 이중 슬래시를 사용할 때 cmd.exe가 네트워크에 충돌하는 것을 방지하려면 어떻게해야합니까?
CoffeeScript 파일을 컴파일 할 때 불행하게도 (30 초 초과) 큰 지연이 발생합니다.
프로세스 탐색기와 프로세스 모니터를 사용하여 이미 명령 줄을 원인 중 하나로 확인했습니다. (!하지 cscript.exe
) 어떤 이유로 cmd.exe
를 들어
cscript //E:jscript //Nologo //U C:/path_to_coffeescript_compiler.js
하지만 약간의 지연 후, 이중 백 슬래시로 이중 슬래시를 취급하고 분명히 실패 각 매개 변수의 네트워크 이름을 확인하려고 : cscript.exe
더블 슬래시와 매개 변수가 예상 . 그래서
cmd.exe CreateFile \\E:jscript\\ OBJECT PATH INVALID
cmd.exe CreateFile \\E:jscript \Nologo\\ BAD NETWORK PATH
cmd.exe CreateFile \\E:jscript \Nologo \U\ BAD NETWORK PATH
cmd.exe CreateFile \\Nologo\\ OBJECT PATH INVALID
cmd.exe CreateFile \\Nologo \U\ BAD NETWORK PATH
... 그리고 :
여기에 작은 프로세스 모니터 로그의 발췌입니다.
이 문제를 방지하려면 어떻게해야합니까?
음 ... 나는 이것을 재현 할 수 없다. (procmon은 아무런 활동도 가짜 네트워크 경로를 고려하지 않는다). 'cscript'를 다른 것으로 대체하면 어떻게됩니까? 예를 들어'echo'.만약 정말로'cmd.exe'가 여기서 재미있는 일을한다면, 그곳에서 일어날 것입니다. 또한 대화 형 쉘이나 배치 파일에서'cscript'를 호출 할 것인가? 'echo % CMDCMDLINE %'의 출력을 게시하고 싶을 수도 있습니다. –
재밌 네요,'echo' 나 다른 실행 파일에서는 발생하지 않지만'wscript.exe'에서 일어납니다. 커맨드 라인은'ExecJS'에 의해 생성되며,'cmd.exe'는'/ c' 스위치로 시작됩니다. 또한 * 매 통화마다 지연이 발생하지 않습니다. ExecJS에서 거의 모든 시간이 걸리지 만 내 커맨드 라인에서는 거의 반 시간이 걸립니다. –
예를 들어 실제 명령 줄을 보았다고 가정합니다. 프로세스 익스플로러 (Process Explorer), 어떤 이유로'cmd/C // E : ... '와 같은 것을 생성 할 수 있습니까? 즉 실수로'cscript.exe'를 생략 할 수 있습니까? 또한 단순히 CMD 창에서'cmd/c "cscript // E : jscript // Nologo // U C : /path_to_coffeescript_compiler.js"'를 실행하면 오류가 발생합니까? –