如何在PowerShell中运行批处理脚本?

3

我在编写一个PowerShell脚本时遇到了一些问题,希望能够打开cmd.exe并向其中写入内容,以便运行一些批处理脚本。我正在构建这个脚本,以便与octo.exe一起使用,以便更好地处理发布。

目前为止,我有:

cmd.exe /c start cmd

我尝试了几种不同的方法,但在网上找到的所有内容都是关于从cmd.exe中打开和运行PowerShell。


为什么不使用PowerShell创建一个包含所需运行命令的批处理文件,然后使用cmd.exe执行该批处理文件呢? - Dane Boulton
你可以直接从PowerShell运行外部命令。 - Ansgar Wiechers
1
@TheMadTechnician 我写给cmd.exe的唯一原因是因为我已经有一个脚本在cmd.exe中使用octo.exe运行我的发布。我不熟练使用powershell,实际上这基本上是我第一次使用它,除了修改以前提供的脚本的部分内容。 - Cody Elkins
你可以使用VBScript或.NET的SendKeys函数将任意文本发送到当前聚焦的窗口。你应该能够从PowerShell打开一个新的CMD窗口并使其进入焦点。在它们之间加入一个计时器以确保安全,就可以了。 - Patrick87
改变主意了:永远不要使用 SendKeys - Ansgar Wiechers
显示剩余3条评论
2个回答

6
您可以在PowerShell中运行批处理脚本,就像在cmd.exe中一样。无需调用cmd.exe。
myOctoScript.bat

如果脚本路径是字符串形式,或存储在字符串中,请使用 & 运算符告诉 PowerShell 把该字符串视为命令:
& $pathToOctoBatchScript
& 'Path\To\Octo\Batch\Script.bat'

感谢您的提示,@Aaron。 - Cody Elkins

0

你可以简单地这样做:

Start-Process -FilePath "C:\PathToBatFile\FileToExecute.bat" -ArgumentList $argstr -Wait -NoNewWindow

在这里,

ArgumentList - 用于通过批处理文件传递参数或参数值(如果需要)

Wait - 等待进程(bat)完成

NoNewWindow - 在当前控制台窗口中启动新进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接