用 WshShell.Sendkeys 和 windows 批量打印双引号

Print double quotations with WshShell.Sendkeys and windows batch

我有一个脚本可以更改用户目录并使用命令预填充输入,因此他只需查看它并在按 enter 键之前更改值。将要编写的命令需要双引号,我无法让它在输入中打印出来。我尝试了各种转义字符,如 ^"、\"、""、""" 和 {"},但我得到了 none 个字符。我为此使用 WshShell,但如果无法使用它并且有更好的方法可以解决此问题,那么我洗耳恭听。

目标是用户将在命令中看到这个 window:

command.exe parameter="hello" parameter2="world"

.bat 文件:

@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));

batscript 来源:

使用 %SendKeys% "'command.exe parameter=\u0022hello\u0022 parameter2=\u0022world\u0022'" 并将最后一行更改为 WshShell.SendKeys(eval(WScript.Arguments(0)));。请注意,您需要在所有字符串的开头结尾添加撇号 ';即:

@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=\u0022hello\u0022 parameter2=\u0022world\u0022'"
set /P "="
ECHO TERMINATE ORIGINAL BATCH
goto :EOF
@end
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(eval(WScript.Arguments(0)));