2017-06-09 7 views
3

私は、ファイルが存在するかどうかを確認するために、そのディレクトリを確認するファイルのリストを持っています。私はパワーシェルにあまり慣れていないが、これはこれまでのところうまくいきません。リストが存在するかどうかを調べてファイルが存在するかどうかを確認しますか?

$filePath = "C:\Desktop\test\" 
$currentDate = Get-Date -format yyyyMMdd 

$listOfFiles = 
"{0}{1}testFile.txt", 
"{0}{1}Base.txt", 
"{0}{1}ErrorFile.txt", 
"{0}{1}UploadError.txt"` 
-f $filePath, $currentDate 

foreach ($item in $listOfFiles) 
{ 
    [System.IO.File]::Exists($item) 
} 

これは可能ですか?

答えて

4

Test-Pathコマンドレットを使用できます。

$filePath = "C:\Desktop\test\" 
$currentDate = Get-Date -format yyyyMMdd 
#I'm using 1..4 to create an array to loop over rather than manually creating each entry 
#Also used String Interpolation rather than -f to inject the values 
1..4 | ForEach-Object {Test-Path "${filePath}${currentDate}file$_.txt"} 

編集:更新されたファイル名について 、ここでは、あなたを介してループするように配列にそれらを置くことができる方法です。

"testFile","Base","ErrorFile","UploadError" | ForEach-Object { 
    Test-Path "${filePath}${currentDate}$_.txt" 
} 
+0

これはうまくいきましたが、私のファイルにそのような名前を付けるつもりはありませんでした。私は本当に何を確認しているかを示すために今変更しました。 – user3266638

+0

ありがとう@BenH。私は投票することはできませんが、それを受け入れたようです。 – user3266638

0

はい、これはPowerShellで行うことができます。

$filePath = "C:\Desktop\test\$((Get-Date).ToString("yyyyMMdd"))" 

foreach ($n in 1..4) { 
    Test-Path $($filePath +"file$n.txt") 
} 
+0

'Get-ChildItem'は存在するファイルのみを取得するため、ループ内の' $ item'はすべて 'Test-Path'で' $ True'を返します。 – BenH

+0

@Benh良い点、愚かな論理間違いは、短いカットを取ろうとしている。 – gms0ulman

関連する問題