PowerShellを使用してファイルが存在するかどうかを確認する方法
このSゾーンでは、VictorがPowerShellを使用してファイルが存在するかどうかを確認する方法を説明します。このガイドでは、PowerShellを使用してファイルが存在するかどうかを確認するための複数の例について説明します。
PowerShellを使用してファイルが存在するかどうかを確認するには、 テストパス コマンドレット。ただし、ファイルパスを直接入力することもできます。 テストパス コマンドを実行するか、ファイルを変数に保存します。次に、変数を使用します テストパス 。
投稿トピックを閲覧する
- PowerShellを使用してファイルが変数なしで存在するかどうかを確認する方法
- PowerShellを使用してファイルに変数が存在するかどうかを確認する方法
- PowerShellを使用してファイルがフォルダーに存在するかどうかを確認する方法
- PowerShellを使用してファイルがリモートコンピューターに存在するかどうかを確認する方法
- 参考文献と参考資料
PowerShellを使用してファイルが変数なしで存在するかどうかを確認する方法
このセクションのセクションでは、実行方法を説明します テストパス 変数なしのコマンド。
Test-Pathはスタンドアロンコマンドとして実行できます。さらに、コマンドをと組み合わせることもできます もしも 結果に基づいて追加のタスクを実行するステートメント テストパス 指図。
変数なしで直接Test-Pathを実行する方法
このサブセクションでは、Test-Pathを単独で実行する方法を説明します(結果を使用せずに もしも 声明)。
E: reportsにprocesses.txtというファイルがあります。
ファイルが存在するかどうかを確認するには、PowerShellで以下のコマンドを入力し、Enterキーを押します。
Test-Path -Path E: eportsprocesses.txt
押すと、PowerShellが返されました 真 、ファイルが存在することを意味します。
ただし、存在しないファイルに対して同じコマンドを実行すると、PowerShellは 誤り 。
変数なしでテストパスとIFステートメントを組み合わせる方法
前述したように、PowerShell Test-Pathを使用してファイルが存在するかどうかを確認した後、結果を次のように使用できます。 もしも 追加タスクを実行するステートメント。
この例では、E: reports processes.txtが存在するかどうかを確認し、存在する場合は、ファイルをC: reportsにコピーします。これがその仕事をするスクリプトです。
このコマンドをで実行することをお勧めします PowerShell ISEIf (Test-Path -Path E:
eportsprocesses.txt ) { Copy-Item -Path E:
eportsprocesses.txt -Destination C:
eports }これは、PowerShell ISEでの結果と、C: reportsにコピーされたファイルです。
2行追加することで、スクリプトをよりスマートにすることができます。
Write-Host 'file copied'
と…。
Else { Write-Host 'file does not exist' }上記の最初のコマンドは、ファイルがコピーされた場合にメッセージを表示します。 2つ目は、ファイルが存在しないというメッセージを表示します。これが変更されたスクリプトです…
Windowsアクティベーションエラーコード0x803f7001
If (Test-Path -Path E:
eportsprocesses.txt ) { Copy-Item -Path E:
eportsprocesses.txt -Destination C:
eports Write-Host 'file copied' } Else { Write-Host 'file does not exist' }
PowerShellを使用してファイルに変数が存在するかどうかを確認する方法
前のセクションでは、PowerShellを使用して、変数を使用せずにファイルが存在するかどうかを確認する方法を示しました。このセクションでは、Test-Pathの結果を変数に保存します。次に、変数を使用します もしも 声明。
このセクションの例では、次のことを確認したいと思います。 first-file.txt 下の画像に示されているパスに存在します。次に、存在する場合は、ファイルをC: PSにコピーします
最初のステップでは、以下のコマンドを実行します。
$fileexists = Test-Path -Path E: eportsfirst-file.txt
このコマンドは最後のコマンドと同じですが、1つ違いがあります。コマンドの結果は、 ファイルが存在しています 変数。
PowerShellを使用してファイルが存在するかどうかを確認してコピーする方法
このセクションを紹介したとき、私はの出力を保存しました テストパス にコマンド ファイルが存在しています 変数。
$fileexists = Test-Path -Path E: eportsfirst-file.txt
このサブセクションでは、ファイルが存在する場合にそのファイルをコピーする方法を説明します。これを行うために、私は紹介します もしも とのステートメント コピーアイテム 指図。
If ($fileexists ) { Copy-Item -Path E:
eportsfirst-file.txt -Destination C:PS }コマンドを組み合わせた完全なスクリプトは次のとおりです。
$fileexists = Test-Path -Path E:
eportsfirst-file.txt If ($fileexists ) { Copy-Item -Path E:
eportsfirst-file.txt -Destination C:PS }これがPowerShellISEのスクリプトです。
PowerShellを使用してファイルが存在するかどうかを確認して削除する方法
最後のサブセクションでは、ファイルが存在するかどうかを確認し、ファイルをコピーする方法を説明しました。代わりにファイルをコピーしたい場合はどうなりますか?
ファイルをコピーする代わりに削除したい場合は、 コピーアイテム とのコマンド 削除-アイテム 指図。
これは、PowerShellIFステートメントを使用してファイルが存在するかどうかを確認する更新されたスクリプトです。次に、存在する場合は削除します…
$fileexists = Test-Path -Path E:
eportsfirst-file.txt If ($fileexists ) { Remove-Item -Path E:
eportsfirst-file.txt -Force }PowerShellを使用してファイルが存在するかどうかを確認する方法
一部のPowerShellスクリプトの状況では、ファイルが存在するかどうかを確認する必要がある場合があります。次に、存在する場合は、ファイルのコピーや削除などの指定されたタスクを実行します。それ以外の場合は、スクリプトを終了します。
これを達成するためにあなたがする必要があるのは追加することだけです それ以外 のブロック もしも 声明。
最後のサブセクションでは、このスクリプトを使用して、ファイルが存在する場合はそれを削除しました。
$fileexists = Test-Path -Path E: eportsfirst-file.txt
If ($fileexists ) {
Remove-Item -Path E: eportsfirst-file.txt -Force
}
ファイルが存在しない場合にスクリプトを終了させたい場合は、以下に示すようにスクリプトを変更します…
$fileexists = Test-Path -Path E:
eportsfirst-file.txt If ($fileexists ) { Remove-Item -Path E:
eportsfirst-file.txt -Force } Else { Break }変更されたスクリプトのロジックは次のとおりです…
ファイルE: reports first-file.txtが存在するかどうかを確認します。存在する場合は、ファイルを削除します。
ただし、ファイルが存在しない場合は、次のコマンドを実行してください。 それ以外 のブロック もしも 声明。この場合、 それ以外 ループは言葉です、 壊す 。
壊す スクリプトの処理を停止するようにPowerShellに指示します。追加することもできます 壊す ステートメントのIfブロック–Remove-Itemコマンドの下…
$fileexists = Test-Path -Path E:
eportsfirst-file.txt If ($fileexists ) { Remove-Item -Path E:
eportsfirst-file.txt -Force Break } PowerShellを使用して、ファイルが存在し、空でないかどうかを確認する方法
これは、PowerShellスクリプトで一般的なもう1つの条件であり、ファイルが存在し、空ではないかどうかを確認します。これは、ログファイルに適用される場合があります。
たとえば、ログファイルを作成および更新するアプリケーションがある場合、新しいログファイルが更新されていることを確認するPowerShellスクリプトを作成できます。
次に、ファイルが存在するかどうかをテストするには、 テストパス 指図。ただし、ファイルが空かどうかを確認するには、別のコマンドを導入する必要があります。 Get-ChildItem 。
このシナリオでは、 Get-ChildItem 2つの方法でコマンドします。
1 、単一のファイルが空かどうかを確認したい場合は、実行できます Get-ChildItem コマンド、ファイルのフルパスを 道 パラメータ。 2 または、フォルダ内の多数のファイルを確認する場合は、フォルダパスを次のように使用します。 道 パラメータ。
このセクションでは、特定のファイルが存在し、空であるかどうかを確認する例を示します。 2番目のオプションについては PowerShellを使用してファイルがフォルダーに存在するかどうかを確認する方法 このガイドの後半のセクション。
この例では、ファイルが first-file.txt そしてそれが空の場合。
前に述べたように、最初のステップは実行することです Get-ChildItem コマンド、ファイルのフルパスを 道 パラメータ。開始するには、以下のコマンドを実行します…
Get-ChildItem -Path E: eportsfirst-file.txt
コマンドの結果は次のとおりです。コマンドの結果から、ファイルに次のプロパティがあることがわかります。 長さ 。
事実上、 長さ ファイルのプロパティは、ファイルのサイズを示します。さらに、ファイルが空の場合、 長さ ゼロ(0)になります。
したがって、PowerShellを使用してが空でないかどうかを確認するには、 長さ ゼロ(0)ではありません。
これを実現するために、最後のコマンドを次のように変更します…
(Get-ChildItem -Path E: eportsfirst-file.txt). Length -ne '0'
これは、PowerShellでのコマンドの結果です。この例では、ファイルのサイズが0(空)であるため、コマンドが返されました false 。
これは、このファイルが空であることを意味します。
luaのメモリが足りませんgmod
しかし、ファイルが存在するかどうかをテストするビットをどのように含めるのでしょうか。よろしくお願いします!
PowerShellを使用してファイルが存在するかどうかを確認し、ファイルが空でないことも確認するロジックを導入するために、前のスクリプトの一部と Get-ChildItem 上記のコマンド。
これが私の変更したスクリプトです…
$fileexists = Test-Path -Path E:
eportsfirst-file.txt $checkiffileisempty = (Get-ChildItem -Path E:
eportsfirst-file.txt). Length -ne '0' If (($fileexists -eq $True) -and ($checkiffileisempty -eq $False)) { Set-Content -Path E:
eportsfirst-file.txt -Value 'This will add some text for this file' }この変更されたバージョンのスクリプトでは、次の変更を加えました…
- 2行目で、 Get-ChildItem ファイルが空かどうかをチェックするコマンド–という変数で $ checkiffileisempty 。
$checkiffileisempty = (Get-ChildItem -Path E: eportsfirst-file.txt). Length -ne '0'
- 次に、3行目で別の条件を追加しました もしも 声明。の状態部分 もしも ステートメントがIf(($ fileexists -eq $ True)-and($ checkiffileisempty -eq $ False))に更新されました。
この条件は、何が保存されているかをテストします $ fileexists は 真 (ファイルが存在しています)。さらに、何が保存されているかをチェックします $ checkiffileisempt は 誤り (ファイルは空です)。
事実上、PowerShellは テストパス ファイルパスが存在するかどうかをチェックするコマンドは 真 。さらに、それはまたかどうかをチェックします Get-ChildItem ファイルが空でないかどうかをチェックするコマンドは 誤り (ファイルが空であることを意味します) - 最後に、両方の条件が満たされた場合、4行目でPowerShellはIfステートメントの{}括弧内のコマンドを実行します。
この例では、Ifステートメントの{}括弧内にこのコマンドがあります。
Set-Content -Path E: eportsfirst-file.txt -Value 'This will add some text for this file'
コマンドは、テキストを追加します 価値 のパラメータ セットコンテンツ 指図。
スクリプトが機能することをテストするには、スクリプトをPowerShell ISEにコピーして、スクリプトを実行します…
スクリプトを実行すると、ファイル、 first-file.txt –以前は空でした–現在はいくつかの値が含まれています。さらに、ファイルサイズはゼロ(0)ではなくなりました。
PowerShellを使用してファイルがフォルダーに存在するかどうかを確認する方法
これまで、このガイドでは、PowerShellを使用してファイルが存在するかどうかを確認するための複数のシナリオについて説明してきました。
このセクションでは、フォルダーについて詳しく説明します。具体的には、ファイルが現在のフォルダーまたはすべてのサブフォルダーに存在するかどうかを確認する方法を学習します。
さらに、PowerShellを使用してファイルが複数のフォルダーに存在するかどうかを確認する方法を学習します。最後に、ワイルドカードを使用してファイルが存在するかどうかを確認する方法を示します。
PowerShellを使用してファイルが現在のフォルダーに存在するかどうかを確認する方法
この最初の例では、すべてのサブフォルダーを除いて、ファイルが現在のフォルダーに存在するかどうかを確認する方法を学習します。
この例では、ファイル拡張子が.logのファイルがE: reportsフォルダーに存在するかどうかを確認します。ただし、すべてのサブフォルダーを除外したいと思います。
最初のステップは、を実行することです Get-ChildItem 指図。次に、出力をにパイプします Where-Object でフィルタリングします PSIsContainer 財産。
ザ PSIsContainer プロパティは、フォルダまたはディレクトリを定義するプロパティです。の中に Where-Object コマンドで、$ _。PSIsContainer-ne $ trueを指定しました。このコマンドは、次の場合はアイテムを返さないように指示するだけです。 PSIsContainer プロパティはTrueです。これにより、ファイルのみが返されます。これがコマンドです…
Get-ChildItem E:
eports | Where-Object {$_.PSIsContainer -ne $true}そして、これがPowerShellでの結果です…
最後のステップは、現在のフォルダー内の.log拡張子を持つすべてのファイルのフルパスを返すことです。
これがコマンドです…
Get-ChildItem E:
eports | Where-Object { ($_.PSIsContainer -ne $true) -and ($_.Extension -eq '.log')} | Select-Object FullNameそしてその結果…
この時点から、ファイルに対してさらにタスクを実行する場合は、最後の結果の出力をパイプでつなぐことができます。 ForEach ループ。次に、 ForEach ループ、追加のコマンドを実行できます。PowerShellを使用してファイルがサブフォルダーに存在するかどうかを確認する方法
特定のファイルが現在のフォルダーではなくすべてのサブフォルダーに存在するかどうかを確認する場合は、 Get-ChildItem 指図。
具体的には、パイプを使用する場合 Get-ChildItem コマンド、に Where-Object 、フィルタリングします Where-Object フォルダのみを返します。
(Get-ChildItem E:
eports | Where-Object {$_.PSIsContainer}).FullNameこのコマンドは、指定されたフォルダー内のすべてのサブフォルダーへのフルパスを返します…
次のステップでは、を使用する必要があります ForEach 最後のコマンドによって返されたすべてのフォルダーを反復処理するステートメント。次に、 ForEach ステートメント、別の Get-ChildItem 各サブフォルダーに対するコマンド。
には3つのバリエーションがあります ForEach ただし、この例では、 ForEach -オブジェクトコマンドレット。
(Get-ChildItem E:
eports | Where-Object {$_.PSIsContainer}).FullName | ForEach -Object { Get-ChildItem $_ | Where-Object { ($_.Extension -eq '.log')} | Select-Object Directory, FullName }このコマンドは、サブフォルダー内のすべてのログファイルを表示します…
PowerShellを使用して、ファイルが現在のフォルダーとすべてのサブフォルダーに存在するかどうかを確認する方法
最後の2つのサブセクションでは、 PSIsContainer サブフォルダーをフィルターで除外するか、サブフォルダーのみを返すプロパティ。この例では、 PSIsContainer 財産。
ただし、紹介します Get-ChildItem 呼び出されるコマンドパラメータ 再帰 。ザ 再帰 パラメータ力 Get-ChildItem 指定したフォルダとそのすべてのサブフォルダを確認します。
これが変更されたスクリプトです。
(Get-ChildItem E:
eports - Recurse ).FullName | ForEach -Object { Get-ChildItem $_ | Where-Object { ($_.Extension -eq '.log')} | Select-Object Directory, FullName }ザ 再帰 パラメータは最初に導入されます Get-ChildItem 指図。 2番目は必要ありません Get-ChildItem コマンド(内 ForEach-Object ブロック)。
コマンドの結果は次のとおりです。今回のレポートには、最上位フォルダーとそのすべてのサブフォルダー内のすべてのログファイルが含まれます。
PowerShellを使用してファイルがリモートコンピューターに存在するかどうかを確認する方法
リモートコンピューターにファイルが存在するかどうかをテストする場合は、このガイドのすべての例で説明されているのと同じ原則を適用できます。
ただし、という新しいコマンドを導入する必要があります 呼び出す-コマンド 。次に、 呼び出す-コマンド コマンド、その使用 ScriptBlock このガイドで前述したコマンドの1つを指定するパラメーター。
注意すべきもう1つの重要な点は、リモートコンピューターへの接続権限を持つアカウントのユーザー名とパスワードを指定する必要がある場合があることです。
さらに、指定されたアカウントには、コマンドを実行する権限が必要です。 ScriptBlock パラメータ–リモートコンピュータ上。
最後に、 コンピュータネーム リモートコンピューターの名前を指定するパラメーター。
参考までに、ここにの一般的な構文があります 呼び出す-コマンド 指図。
Invoke-Command -ComputerName -Credential -ScriptBlock {Test-Path}詳細については、 呼び出す-コマンド コマンドについては、このガイドの最後にある「参考資料と参考資料」を参照してください。
希望があれば、PowerShellを使用してファイルが存在するかどうかを確認する方法をうまく教えることができました!
また、Sゾーンがお役に立てば幸いです。役に立ったと思ったら、親切に投票してください はい この投稿は以下の役立つ質問でした。
または、このページの最後にある[返信を残す]フォームを使用して、質問したり、コメントを残したり、フィードバックを提供したりすることもできます。
最後に、その他の電子メール技術Sゾーンについては、WindowsPowerShellのハウツーページにアクセスしてください。また、ホームページからの作業が非常に役立つ場合があります。
参考文献と参考資料
- 呼び出す-コマンド
- 他に説明されている場合のPowershell:構文と例
- Get-ChildItem
- テストパス


