私はビデオファイルをバッチ変換するために、PowerShellでスクリプトを作成しようとしています。Powershellのテストパスの動作
私が使用する方法は、ビデオファイルでいっぱいのフォルダに移動して実行することです。これは、 "コマンドラインモード"(ハンドブレークと呼ばれる)で実行できる変換プログラムを使用し、ファイル拡張子の前に "-android"が付加された変換ファイルを保存します。たとえば、フォルダ内にvideo1.aviという名前のファイルがある場合、スクリプトを実行した後のフォルダには2つのファイルがあります:video1.aviとvideo1-android.avi
このようにしたい理由は私は、各ビデオファイルのために変換されたバージョンがあるかどうかを確認できます(名前に-androidが付加されています)。その場合は、そのファイルの変換をスキップしてください。
これは私が食べるところです。問題は、Test-Pathの動作(ファイルが存在するかどうかをテストするために使用しているコマンドレット)です。
ビデオファイルに「珍しい」名前(たとえば私の場合はvideo [long] .avi)があると、Test-Pathはそのファイルが存在するかどうかをチェックすると常にFalseを返します。
あなたはこれをテストするための簡単な方法は、これを行うために、たとえば次のとおりです。その名に「[」のファイルを作成するために、空のフォルダ、 実行メモ帳に
ゴー:
¬epad test[x].txt
それがない
Get-ChildItem | ForEach-Object {Test-Path $_.FullName}
:
はこれを行うにファイルを保存真実を返さない!それは正しいはずですか?ファイル名に "["が付いていても(私は他の特殊文字はチェックしていませんでした)
"["と "]"をエスケープすると実現しました
Test-Path 'test`[x`].txt'
がtrueを返します。
どうすればこの問題を回避できますか?私はできるようにしたい:ファイルのBaseNameを与え、 " - android.avi"を追加し、その名前のファイルが存在するかどうかをチェックする。
おかげで、 ルイ
ありがとう、それは私が必要としていたもの – Rui