2

たとえば、C:\scripts\MyScript.ps1 に次のようなスクリプトがあるとします。

Get-Content ".\text.txt"

C:\scripts には、スクリプトが呼び出されたときに出力される任意のテキストを含む text.txt ファイルもあります。このスクリプトは、PowerShell の現在のディレクトリが C:\scripts のときに使用すると問題なく動作します。ただし、PowerShell が現在別のディレクトリ (C:\otherFolder など) にある場合、PoSh コマンド ウィンドウからのスクリプトの呼び出しは失敗します。

PS C:\otherFolder> ..\scripts\MyScript.ps1

これは、スクリプト内の text.txt への参照が相対的であり、ファイルが C:\otherFolder に存在しないためです。私の質問は、別のフォルダー内から呼び出された場合でも意図したとおりに動作する、他のファイルへの相対参照を持つスクリプトを作成する方法はありますか?

スクリプトが「C:\scripts\text.txt」を参照していても問題ないことはわかっていますが、スクリプト (およびそれに依存するファイル) を移動できるようにしたいと考えています。毎回スクリプト。

ありがとう。

4

2 に答える 2

3

スクリプトでこれを試してください:

$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
$path = join-path $dir "text.txt"
get-content $path
于 2013-10-23T14:49:02.847 に答える
2

この関連する StackOverflow の質問が答えを提供すると思います: 実行中のコマンドレットの現在のディレクトリを取得する方法

$MyInvocation.MyCommand.Pathおそらくスクリプト内で使用したいと思うでしょう

于 2013-10-23T14:49:10.297 に答える