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""