当我从PowerShell执行.\flyway.cmd
时,它的行为与我期望的一样 - 输出保留在PowerShell中。但是,当我运行c:\temp\flyway\flyway.cmd
(绝对路径)时,它会弹出一个cmd窗口。为什么呢?
其他信息: 灵感来自“CMD脚本中有什么?”的问题。来自andyb,我开始玩不同的脚本。我最终发现我可以制作当前cmd文件的精确副本,并且该副本按预期运行。这意味着有一些文件属性正在使它做到这一点。它最初是一个“被阻止”的文件,我不得不在其属性中取消阻止(窗口经常使用下载的文件执行此操作)。但它已经不复存在了。我也可以通过使用cmd / c运行整个命令来使其一致运行,但这仍然无法解释有什么不同。
答案 0 :(得分:1)
我认为这是由于PS如何解释“。” 对于PS,这意味着你要运行一些东西。 将绝对路径放在文件中意味着您正在引用该文件,就像从Windows资源管理器中那样。
如果要使用绝对路径运行它,请使用呼叫运算符“&”:
& 'c:\temp\flyway\flyway.cmd'
这应该可以解决问题。
您可以在TechNet或The PowerShell Wiki
上详细了解相关信息我希望这可以帮到你!
快乐的脚本!