在我执行的PowerShell窗口中:
Start-Process XXXXX.exe -ArgumentList "some valid arguments" -wait
-redirectStandardOutput "D:\\test1.txt"
得到:
Start-Process : This command cannot be executed due to the error: The system cannot find the file specified.
At line:1 char:14
+ Start-Process <<<< XXXXX.exe -ArgumentList "some valid arguments here" -redirectStandardOutput "D:\\test1.txt"
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
我已经检查过启动过程是否按预期工作,如果省略-redirectStandardOutput参数(确实如此)。
test1.txt是一个新文件,而不是试图追加。
令人惊讶的是,当我运行该行时,D:\上的test1.txt文件被创建,它只是保持为空。
有谁知道这里发生了什么? 感谢。
修改
我发现如果我跑:
Start-Process XXXXX.exe -ArgumentList "some valid arguments" -wait
-redirectStandardOutput "D:\\test1.txt"
失败(最初发布) 如果我跑:
Start-Process XXXXX.exe -ArgumentList "some valid arguments" -wait
它工作正常,但没有将控制台输出保存到文件 如果我跑
Start-Process .\XXXXX.exe -ArgumentList "some valid arguments" -wait
-redirectStandardOutput "D:\\test1.txt"
它的工作方式与预期相同。 那么为什么我需要在使用重定向时指定路径,但是当我不是它时,它会快乐地运行?
修改 重述问题;关于当前目录中的脚本/ exes要求允许运行./前缀的要求似乎存在一些不一致。当我不重定向输出时,不需要./。任何人都知道这是否是预期的行为?
答案 0 :(得分:0)
RichyRoo,
您看到的问题很可能是因为您的XXXXX.exe位置未在PATH环境变量中注册。
如果您尝试使用在PATH环境变量内定义的文件夹之一中注册的应用程序运行命令,则该命令应该可以正常运行而不会在末尾出现。\ 即:
Start-Process cmd.exe -ArgumentList "/c ping 127.0.0.1" -redirectStandardOutput "D:\ABC\test.txt" -Wait
我尝试了使用示例批处理文件的第二个示例,如果不使用..前缀路径,它将无法正常工作-复制您的行为。
因此,通过在您的xxxxx.exe前面加上。\来限定.exe位置,它可以为您工作,因为我假设您外壳中的当前目录就是您的.exe位置。
我还没有抬起头来为什么没有在命令执行级别查看当前路径。