2017-05-31 5 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とコマンドライン引数を渡すスクリプトを作成するにはどうすればよいですか?最初のコマンドとして

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

+0

'% '〜dp0'は空白のあるディレクトリに評価されても動作しません。この状況では、作業ディレクトリの二重引用符を三重にする必要があります: '' "〜" dp0 "" "' – iRon

+1

昇格時にプロセスの初期作業ディレクトリを設定することはできません。デフォルトでは 'System32'(または' 32ビットプロセスの場合は「SysWOW64」)。これは設計によるものです。 –

+1

'%〜dpn0.ps1'の最初のコマンドとして' Set-Location(Split-Path $ MyInvocation.MyCommand.Path) 'を使うのはどうですか? – LotPings

答えて

0

この問題を回避するには、PowerShellスクリプトがでそれ自身の原点にディレクトリを変更できるようにすることです。

また、このディレクトリを使用して隣接するファイルを開くこともできます。

$MyDir = Split-Path $MyInvocation.MyCommand.Path 
$Content = Get-Content (Join-Path $MyDir OtherFile.txt) 
関連する問題