使用cygwin网络执行cmd命令并重定向stdout

问题描述 投票:0回答:2

在Windows 7上使用cygwin,需要:

  • cmd
  • 中执行命令
  • 立即返回(使用
    START
  • 将标准输出重定向到文件

我已经尝试过(在cygwin中执行):

cmd /C "START cmd /C \"executableFileName -f -n 100 > logFilePath.txt\""

上面的代码有很多变体,但没有任何效果。

cmd cygwin
2个回答
1
投票

我没有cygwin,所以无法测试。但请尝试以下操作。

cmd /c start cmd /c "executableFileName -f -n 100 >logFilePath.txt"

/c
后面的命令周围的引号不是必需的,因此您不需要在第一个
cmd /c
中使用它们。它们在第二个
cmd /c
中很有用,可以防止在执行最终命令之前激活重定向。

关于您的原始代码 - cmd.exe 的转义字符是

^
,而不是
\
,一旦引用开始,您就无法转义引用。这就是为什么我选择不在最外面包含任何引号
cmd /c


0
投票

如果您确实需要

cmd
来运行命令,我认为您能做的最好的事情是:

powershell -c 'cmd /c "executableFileName -f -n 100 > logFilePath.txt"'

调用 Windows 程序时,cygwin 将

/C
翻译为
C:\
(如
start /b program
-->
start B:\ program
)。这把事情搞砸了。

由于 powershell 接受

-c
而不是
/c
,因此它可以工作。在其命令中,您可以安全地使用
/c

© www.soinside.com 2019 - 2024. All rights reserved.