.cmd文件的相对路径在PowerShell中运行,但绝对路径会打开一个单独的cmd窗口

时间:2017-12-13 00:11:29

标签: powershell batch-file

当我从PowerShell执行.\flyway.cmd时,它的行为与我期望的一样 - 输出保留在PowerShell中。但是,当我运行c:\temp\flyway\flyway.cmd(绝对路径)时,它会弹出一个cmd窗口。为什么呢?

其他信息: 灵感来自“CMD脚本中有什么?”的问题。来自andyb,我开始玩不同的脚本。我最终发现我可以制作当前cmd文件的精确副本,并且该副本按预期运行。这意味着有一些文件属性正在使它做到这一点。它最初是一个“被阻止”的文件,我不得不在其属性中取消阻止(窗口经常使用下载的文件执行此操作)。但它已经不复存在了。我也可以通过使用cmd / c运行整个命令来使其一致运行,但这仍然无法解释有什么不同。

1 个答案:

答案 0 :(得分:1)

我认为这是由于PS如何解释“。” 对于PS,这意味着你要运行一些东西。 将绝对路径放在文件中意味着您正在引用该文件,就像从Windows资源管理器中那样。

如果要使用绝对路径运行它,请使用呼叫运算符“&”:

& 'c:\temp\flyway\flyway.cmd'

这应该可以解决问题。

您可以在TechNetThe PowerShell Wiki

上详细了解相关信息

我希望这可以帮到你!

快乐的脚本!