2

スクリプトの現在実行中のディレクトリではなく、スクリプトが実行されている現在のディレクトリを取得したい。

スクリプトは「d:\projects\code\development.tools」にあり、「d:\projects\code\development\ace\ace.testing」にあるプロジェクトのディレクトリが必要です

ここで、Psake プロパティの外部で「Write-Host $Env:PWD」または単に「$Env:PWD」を実行すると、実際に必要なものが得られますが、プロパティ内から取得しようとすると、何が返されますか$PWD が返され、それがスクリプトの実行ディレクトリです。

Write-Host $Env:PWD # returns d:\projects\code\development\ace\ace.testing

Properties {
    $baseDir = $Env:PWD # returns d:\projects\code\development\.tools
}

ここで何が起こっているのかわかりませんが、理解できません。

正しいパスを変数に格納しようとしましたが、実際には機能しませんでした。

アップデート:

それに数時間を費やした後、実際に機能していることに気付きました! 私はそのスクリプトに取り組んでいて、throw ステートメントをどこかに置いていて、そこにあることを忘れていました! だから私は Psake が何か変なことをしていると思った。そのせいでうまくいかなかったけど、Psake はピュアだ! ;)

したがって、スクリプトが実行されている現在のディレクトリを取得したい場合は、 $Env:PWD がそれを行うようです! :)

4

2 に答える 2

8

実行中のスクリプトの場所を取得するには:

Split-Path $myInvocation.MyCommand.Path

現在の作業ディレクトリのパスを取得するには:

(Get-Item -Path '.\' -Verbose).FullName
于 2015-02-03T20:00:10.557 に答える