如何 运行 .cmd 文件和命令
How to run .cmd files and commands
我转到初始化环境的文件夹 C:\projects
和 运行 脚本 init.cmd
,然后我转到任何项目,例如C:\projects\my_app
和 运行 命令 build
构建项目。我需要在 PowerShell 中自动化它。那怎么办?我的尝试:
Set-Location "C:\projects"
Invoke-Item init.cmd # c:\projects\init.cmd
# Wait for init.cmd finish its work
$paths = Get-Content $paths_array
foreach ($path in $paths)
{
Set-Location $path
Invoke-Item build # build is set in paths
# Wait for build finish its work
}
试试这个方法:
Set-Location "C:\projects"
$cmdpath = 'c:\windows\system32\cmd.exe /c'
Invoke-Expression "$cmdpath init.cmd"
$paths = Get-Content $paths_array
foreach ($path in $paths)
{
Set-Location $path
Invoke-Expression "$cmdpath build"
}
此外,如果您对脚本输出不感兴趣,只想执行它们,您可以像这样使用 Out-Null
:
Set-Location "C:\projects"
$cmdpath = 'c:\windows\system32\cmd.exe /c'
Invoke-Expression "$cmdpath init.cmd" | Out-Null
$paths = Get-Content $paths_array
foreach ($path in $paths)
{
Set-Location $path
Invoke-Expression "$cmdpath build" | Out-Null
}
批处理脚本可以 运行 直接来自 PowerShell,并且应该同步执行,即调用应该只在 return 执行完成后。
有多种调用批处理脚本的方法,但我个人更喜欢使用调用运算符 (&
):
Set-Location "C:\projects"
& .\init.cmd
Get-Content $paths_array | ForEach-Object {
Push-Location $_
& .\build.cmd
Pop-Location
}
请注意,您必须指定批处理脚本的(绝对或相对)路径,因为 PowerShell 不在搜索路径中包含当前目录。
我转到初始化环境的文件夹 C:\projects
和 运行 脚本 init.cmd
,然后我转到任何项目,例如C:\projects\my_app
和 运行 命令 build
构建项目。我需要在 PowerShell 中自动化它。那怎么办?我的尝试:
Set-Location "C:\projects"
Invoke-Item init.cmd # c:\projects\init.cmd
# Wait for init.cmd finish its work
$paths = Get-Content $paths_array
foreach ($path in $paths)
{
Set-Location $path
Invoke-Item build # build is set in paths
# Wait for build finish its work
}
试试这个方法:
Set-Location "C:\projects"
$cmdpath = 'c:\windows\system32\cmd.exe /c'
Invoke-Expression "$cmdpath init.cmd"
$paths = Get-Content $paths_array
foreach ($path in $paths)
{
Set-Location $path
Invoke-Expression "$cmdpath build"
}
此外,如果您对脚本输出不感兴趣,只想执行它们,您可以像这样使用 Out-Null
:
Set-Location "C:\projects"
$cmdpath = 'c:\windows\system32\cmd.exe /c'
Invoke-Expression "$cmdpath init.cmd" | Out-Null
$paths = Get-Content $paths_array
foreach ($path in $paths)
{
Set-Location $path
Invoke-Expression "$cmdpath build" | Out-Null
}
批处理脚本可以 运行 直接来自 PowerShell,并且应该同步执行,即调用应该只在 return 执行完成后。
有多种调用批处理脚本的方法,但我个人更喜欢使用调用运算符 (&
):
Set-Location "C:\projects"
& .\init.cmd
Get-Content $paths_array | ForEach-Object {
Push-Location $_
& .\build.cmd
Pop-Location
}
请注意,您必须指定批处理脚本的(绝对或相对)路径,因为 PowerShell 不在搜索路径中包含当前目录。