2017-05-31 68 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) 
相關問題