ファイルパスをテキストファイルに記録する目的で、Get-ChildItemを使用してディレクトリをナビゲートしています。しかし、私は特定のフォルダにいるかどうかに基づいて動的にテキストファイルを作成したいと思います。たとえば、のは、これが私のファイル構造であるとしましょう:PowerShellスクリプト内の場所を動的に知る方法
+--Root
+--LaunchFromHere
+--File1
+--file_I_want1.doc
+--File2
+--file_I_want2.doc
私のスクリプトがLaunchFromHereで起動した場合、私は最終的にfile_I_want.doc
年代に到着し、再帰的にファイル1とファイル2を通過します。しかし、ファイルパスを別の.txtファイルに記録したいのですが、それぞれのファイル名はファイル名で記録されています。したがって、file_I_want1.doc
が見つかると、ファイルパスはFile1.txtというテキストファイルに記録されます。
ここに私の問題です:私は現在、スクリプト内のファイルのファイル名を取得する方法を見つけることができません。
サイトに類似した質問に基づいて、これは私のコードです:
$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$file_title = $directorypath.split('\')[-1]
Get-ChildItem -include *.doc, -recurse | Select -Expand FullName |
ForEach-Object {
$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$file_title = $directorypath.split('\')[-1]
"-----
"Directory path: `t" + $directorypath
"Current file: `t`t" + $file_title
"----"
}
私の出力は今まで私は、したがって、この場合には、スクリプトを実行したファイルのパスを表示します。
PS C:\Root\LaunchFromHere
----
Directory path: C:\Root\LaunchFromHere
Current file: LaunchFromHere
---
そして私の.txtのタイトルは常にLaunchFromHere.txtです
編集:私はOut-File
を削除しましたが、結果をテキストファイルに保存します。
したがって、スクリプトの実行中に横断しているファイルの現在の名前を取得するにはどうすればよいですか?
それは、あなたが投稿したコードはあなたにその出力を与えたことを明らかに可能ではありません。 'ForEach-Object'には決して行きません。 –
あなたは正しいです、私の元のコードでは、私は簡単にするために含まれていない結果を印刷していた他の印刷ステートメントがありました。それにもかかわらず、 'Out-File'を削除しても、私が得たアウトプットはまだ私が記述したものです。 – gsamerica
私のコメントを拡大するために、私が含まれていない私の個人的なコードの印刷ステートメントが、Out-Fileにかかわらず受け取った出力の原因であるということです。しかし、コメントとアウトファイルが削除されても、私はまだ説明した出力を得ています。 – gsamerica