사용자 디렉토리를 변경하고 명령으로 입력을 미리 채우는 스크립트가있어서 enter를 누르기 전에 값을보고 변경해야합니다. 쓰려는 명령은 큰 따옴표가 필요하므로 입력 내용을 인쇄 할 수 없습니다.^", \", "", "" "및 {"} 같은 다양한 이스케이프 문자를 시도했지만 그 중 아무 것도 작동하지 않습니다. 나는 이것을 위해 WshShell을 사용한다. 그러나 그것을 사용하는 것이 가능하지 않다면이 문제를 해결할 더 좋은 방법이있다. 그러면 나는 모든 귀이다.WshShell.Sendkeys 및 windows 배치로 큰 따옴표를 인쇄하십시오.
이command.exe parameter="hello" parameter2="world"
박쥐 파일 : batscript에 대한
@if (@CodeSection == @Batch) @then
@echo off
rem Use %SendKeys% to send keys to the keyboard buffer
set SendKeys=CScript //nologo //E:JScript "%~F0"
rem Start cmd.exe program
start "" cmd
rem Send whatever you want to previous cmd.exe
%SendKeys% "echo Hello World!{ENTER}"
%SendKeys% "cd C:\temp{ENTER}"
%SendKeys% "command.exe parameter="hello" parameter2="world""
set /P "="
ECHO TERMINATE ORIGINAL BATCH
goto :EOF
@end
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
출처 : https://stackoverflow.com/a/22772040/1350598
이것은 sendkeys 문제가 아닙니다. 인수가 jscript에 전달 될 때 인수가 구문 분석되는 방법입니다. 그래서 따옴표를 다른 문자로 만들고 chr (34)로 대체하기 위해 전달한 인수를 대체 할 것을 제안합니다. 그런 다음 해당 값을 sendkeys에 사용하십시오. – Squashman
@ 스쿼시 만 답변 및 팁 주셔서 감사합니다! 나는 여기서 여러분이 제안한 것을 추구하고 새로운 변수를 만들고 char를 운행없이 인용 부호로 대체하려고 시도했습니다. var test = "com.exe parameter = qhelloq"replace (string, chr (34), "q") % SendKeys % test –
일반적으로 바꿀 문자는 다음과 같습니다. 먼저. 나는 내가 프로그래밍 한 어떤 언어로도 그것을 뒤집어 본 적이 결코 없다. Jscript에 지나치게 익숙하지 않기 때문에 잘못 될 수있다. – Squashman