2013-12-17 67 views
31

我无法获得powershell脚本来直接执行bat文件。例如,这个工程在命令行上:从Powershell脚本运行BAT文件的最安全方法

.\\my-app\my-fle.bat 

当我添加此命令的脚本,它输出:

The term '.\\my-app\my-file.bat' is not recognized as the 
name of a cmdlet, function, script file, or operable program. 
Check the spelling of the name, or if a path was included, 
verify that the path is correct and try again. 

我也试过以下,具有相同的结果:

& .\\my-app\my-fle.bat 
& ".\\my-app\my-fle.bat" 
\my-app\my-fle.bat 
& \my-app\my-fle.bat 
& "\my-app\my-fle.bat" 

注意:它必须返回lastexitcode,因为我需要验证批次的成功。

回答

10

试试这个,你的点源有点不对。编辑,为OP添加lastexitcode位。

$A = Start-Process -FilePath .\my-app\my-fle.bat -Wait -passthru;$a.ExitCode

隐形批量添加-WindowStyle Hidden

+0

这工作。这是否也会返回LastExitCode中的退出状态? – cmcginty

+0

要从启动过程访问$ lastexitcode,您需要将命令指定给变量并使用passthru开关,然后从变量读取exitcode。 –

20

要运行.bat和有机会获得最后的退出代码,运行它:

& .\my-app\my-fle.bat 
+0

只有当'my-app'处于相对路径或我使用驱动器号时才起作用。我试图避免将脚本绑定到特定的驱动器。 – cmcginty

+1

@Casey我想我误解了。所以'my-app'是你正在使用的驱动器的根目录下的一个文件夹?如果是这样,'&\ my-app \ my-file.bat'适用于我。你怎么调用.ps1脚本? – Rynant

53
cmd.exe /c '\my-app\my-file.bat'