我对制作批处理文件还比较陌生。我尝试运行一个命令,该命令将在特定目录中打开 Windows PowerShell,然后在那里运行命令。
到目前为止,我有以下内容。Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'"
这似乎可以在正确的位置打开 PowerShell,但我无法让它运行命令node sp
。
我尝试了以下方法,但没有成功PowerShell -NoExit -Command "Write-Host 'node sp'"
另外,是否可以让它在蓝色显示屏上打开 Windows PowerShell,而不是在 CMD(黑/白)窗口中打开?
答案1
由于你没有提供完整的 bat 文件,我猜是
Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'"
PowerShell -NoExit -Command "Write-Host 'node sp'"
这是错误的方法。您首先启动一个 Powershell,它会更改到给定的目录,然后保持打开状态。如果您退出此 powershell,bat 文件将启动第二个 PowerShell。
您需要运行一个 PowerShell 并让其执行这两个命令。一种方法是
Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'; Write-Host 'node sp'"
另一种方法是编写一个 PowerShell 脚本文件(如 MyScript.ps1),其内容如下:
cd 'c:\Dev\ProductDev'
Write-Host 'node sp'
并启动 PowerShell,不给它执行命令,而是给它执行脚本(另请参阅这和这StackOverflow 问题)。您可以直接运行此命令,也可以将其放在 bat 文件中,甚至可以将其用作在 lnk 文件中执行的命令:
PowerShell.exe -noexit -ExecutionPolicy Bypass -File "MyScript.ps1"
PowerShell 的一个问题是,默认情况下它不会运行未经(加密)签名的脚本。解决这个问题的简单方法是使用参数-ExecutionPolicy Bypass
。