如何使用正确的工作目录从BAT文件启动PowerShell脚本?
问题描述:
我正在尝试创建bat脚本,该脚本可以启动PowerShell脚本,该脚本的名称与bat文件的名称相同,适用于直接操作。如何使用正确的工作目录从BAT文件启动PowerShell脚本?
这是我得到:
@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -WorkingDirectory '%~dp0' -Verb RunAs}"
PAUSE
传工作目录这种方式行不通。
如何使脚本通过适当的工作directroy和命令行参数?
答
一种解决方法是让PowerShell脚本目录更改为它自己的起源有:
Set-Location (Split-Path $MyInvocation.MyCommand.Path)
第一个命令。
或使用此目录打开相邻文件。
$MyDir = Split-Path $MyInvocation.MyCommand.Path
$Content = Get-Content (Join-Path $MyDir OtherFile.txt)
它适用于我,但在'%〜dp0''评估为具有空格的目录时,它不会。对于这种情况,您需要将工作目录的三倍双引号:'“”“%〜dp0”“”' – iRon
升级时,不能为进程设置初始工作目录 - 它将默认为“System32”(或“ SysWOW64'为32位进程)。这是设计。 –
使用'Set-Location(Split-Path $ MyInvocation.MyCommand.Path)'作为'%〜dpn0.ps1'中的第一个命令怎么办? – LotPings