我目前正在尝试使用Patch.exe
通过PowerShell修补一些文件我可以使用'&'来调用exe命令,但它似乎没有读取我的p0输入。我不是PowerShell的专家,任何帮助都将不胜感激!
这是我在PS中所说的:
$output = & "$scriptPath\patch.exe" -p0 -i $scriptPath\diff.txt
我的错误是:
can't find file to patch at input line 5
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
我可以通过从命令行中删除补丁文件中的p0参数来模拟。
以下是我已经尝试过的一些替代方案:
#$output = & "$scriptPath\patch.exe" -p0 -i "$scriptPath\diff.txt"
#CMD /c “$scriptPath\patchFile.bat” (where patchFile.bat has %~dp0patch.exe -p0 < %~dp0diff.txt, seems like powershell reads < as 0<, so there is an error there I think)
#GET-CONTENT $scriptPath\diff.txt | &"$scriptPath\patch.exe" "-p0"
#GET-CONTENT $scriptPath\diff.txt | CMD /c “$scriptPath\patch.exe -p0”
谢谢!
答案 0 :(得分:0)
尝试:
$output = & "$scriptPath\patch.exe" -p0 -i "$scriptPath\diff.txt"
答案 1 :(得分:0)
Patch.exe在错误的上下文中启动,我通过使用Push-Location / Pop-Location
解决了这个问题以下是我的代码现在的样子
Push-Location $scriptPath
$output = & "$scriptPath\patch.exe" -p0 -i "$scriptPath\diff.txt"
Pop-Location
基思在他的一条评论中也提到你可以使用:
[Environment]::CurrentDirectory = $pwd
我没有对此进行过测试,但我认为它做了同样的事情(Keith是一个PowerShell MVP,我只是一名学生)。