【发布时间】:2017-11-01 06:28:44
【问题描述】:
我正在尝试创建 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
以这种方式传递工作目录不起作用。
如何制作能够传递正确工作目录和命令行参数的脚本?
【问题讨论】:
-
它对我有用,但如果
'%~dp0'评估为其中包含空格的目录,则不会。对于这种情况,您需要对工作目录进行三重双引号:"""%~dp0""" -
你不能在提升时为进程设置一个初始工作目录——它将默认为
System32(或SysWOW64对于32位进程)。这是设计使然。 -
在
%~dpn0.ps1中使用Set-Location (Split-Path $MyInvocation.MyCommand.Path)作为第一个命令怎么样? -
正确 - 这将是解决方法。在启动提升的进程时设置工作目录无效。
-
@LotPings - 如果你能回答你们的问题,我会接受。
标签: windows powershell batch-file cmd