Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 获取控制台输出并在批处理文件中打印sametime_Windows_Batch File - Fatal编程技术网

Windows 获取控制台输出并在批处理文件中打印sametime

Windows 获取控制台输出并在批处理文件中打印sametime,windows,batch-file,Windows,Batch File,我想打印控制台输出并在同一时间获取。 我试着用下面的代码来获取和打印结果,但不起作用。 我该怎么做 代码: 结果: 'C:\Program' is not recognized as an internal or external command, operable program or batch file. 您的错误消息来自FOR/F命令 解决方案:对FOR/F语句的一个小改动 for /f "delims=" %%i in ('^"%myvar%^"') DO ( 说明: 当通过类似于

我想打印控制台输出并在同一时间获取。 我试着用下面的代码来获取和打印结果,但不起作用。 我该怎么做

代码:

结果:

'C:\Program' is not recognized as an internal or external command,
operable program or batch file.

您的错误消息来自FOR/F命令

解决方案:对FOR/F语句的一个小改动

for /f "delims=" %%i in ('^"%myvar%^"') DO (
说明:

当通过类似于FOR/F的
执行命令时。。。。在('command')DO…
,该命令通过如下命令在新的cmd.exe进程中执行:

C:\Windows\system32\cmd.exe /c command
由于空格的原因,您的命令需要在可执行路径周围加引号。因此,您当前编写的命令变为:

C:\Windows\system32\cmd.exe /c "C:\Program Files (x86)\Inno Setup 5\iscc.exe" asd.iss /SSign_PATH="%cd%\DigitalSign\signtool.exe sign $p"
但是CMD.EXE有一个不幸的设计,即如果命令的第一个字符是引号,那么它通常会在执行之前从命令字符串中去掉最外层的引号。因此,命令变为

C:\Program Files (x86)\Inno Setup 5\iscc.exe" asd.iss /SSign_PATH="%cd%\DigitalSign\signtool.exe sign $p
查看以上内容,您应该能够了解为什么会收到错误消息

解决方案是在整个命令周围添加一组额外的引号,这些引号将被删除。您希望命令看起来像:

C:\Windows\system32\cmd.exe /c ""C:\Program Files (x86)\Inno Setup 5\iscc.exe" asd.iss /SSign_PATH="%cd%\DigitalSign\signtool.exe sign $p""

但是您不想让额外的一组引号脱离批处理解析器,因此它们应该在
IN()
子句中转义。

谢谢您的回答。现在我知道为什么它不起作用了。谢谢但有些事情出了问题。使用固定代码
为/f“delims=”%%i in(“^”%myvar%^“)DO(
运行程序是成功的,但不幸的是,程序(iscc.exe)似乎无法完美地获得参数。iscc.exe只是显示默认打印消息。运行
cmd/c”%myvar%“
是成功的,但
为..in(“^”%myvar%^“)
不是成功的。
C:\Windows\system32\cmd.exe /c ""C:\Program Files (x86)\Inno Setup 5\iscc.exe" asd.iss /SSign_PATH="%cd%\DigitalSign\signtool.exe sign $p""