2017-08-17 76 views
0

我有一个简单的.bat文件,它引用服务器上的多个.ps1文件。该文件称为RUNSHIP.bat和唯一的代码如下:bat文件不会在Windows 7中运行

& V:\SHIPPING\1001.ps1 
& V:\SHIPPING\1002.ps1 
& V:\SHIPPING\1003.ps1 

的代码是正确的,我可以打开PowerShell中的RUNSHIP.ps1文件并运行时,它没有任何问题,但是,当我创建.bat(或.cmd)文件,它甚至不会尝试运行任何代码。我有另外三台机器,所有的设置都是相同的,运行类似的代码没有问题(而不是RUNSHIP.bat它是RUNPACK.bat等)。
我创建了一个测试.bat文件,并在计算机上正常运行。所以问题是......为什么bat文件不能运行,但在Powershell中文件运行正常?我以我的智慧结束了这一点。
使用Windows 7 64位

回答

0

为安全起见,微软成立了PowerShell的,这样就可以不只是在命令行中键入其名称运行PowerShell脚本。要运行命令行PowerShell脚本,你需要明确包括PowerShell命令:

powershell -file filename.ps1 

& filename构建在批量没有意义;它告诉PowerShell运行一个字符串作为命令。

批处理不是PowerShell,PowerShell不是批处理;不要混淆两者的语法。在SS64.com有很好的参考batchPowerShell

+0

这并没有改变任何事情,同样的问题即将到来。我之前在其他电脑上尝试过这种方式,但没有成功。 $ filename构造在我的其他机器上非常棒,这就是为什么这个问题对我来说太困难了。它们都是用相同的方式构建的... – user8309323

+1

如果问题中的代码位于.bat文件中,它将不起作用;你需要用'powershell -file'替换'&'。如果没有,那么就有信息丢失或被错误表达,你需要澄清。 –

+0

上面的代码就是我的bat文件中的所有代码。我用powershell -file取代了&,现在代码读取“powershell -file V:\ SHIPPING \ 1001.ps1 powershell -file V:\ SHIPPING \ 1002.ps1 powershell -file V:\ SHIPPING \ 1003.ps1”。 ..这是我的bat文件中唯一的代码,它仍然不会运行。如果我将bat文件移动到我的其他计算机之一,它运行时没有问题(使用&方法) - 可能有什么不同? – user8309323