2017-05-31 162 views
0

我正在尝试创建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和命令行参数?

+0

它适用于我,但在'%〜dp0''评估为具有空格的目录时,它不会。对于这种情况,您需要将工作目录的三倍双引号:'“”“%〜dp0”“”' – iRon

+1

升级时,不能为进程设置初始工作目录 - 它将默认为“System32”(或“ SysWOW64'为32位进程)。这是设计。 –

+1

使用'Set-Location(Split-Path $ MyInvocation.MyCommand.Path)'作为'%〜dpn0.ps1'中的第一个命令怎么办? – LotPings

回答

0

一种解决方法是让PowerShell脚本目录更改为它自己的起源有:

Set-Location (Split-Path $MyInvocation.MyCommand.Path) 

第一个命令。

或使用此目录打开相邻文件。

$MyDir = Split-Path $MyInvocation.MyCommand.Path 
$Content = Get-Content (Join-Path $MyDir OtherFile.txt)