2016-12-06 18 views
0

Windows 7 x64の場合Powershell 3.0:

私はファイルをダウンロードするディレクトリを持っています。これは.csvファイルで行います。 ファイルのサンプルは次のとおりです。私はこのCSV、オペアンプウィッヒを持ってPowershellはファイルが存在するかどうかを確認します

008KS04.zip 
008KS05.zip 
008KS06.zip 
008KS07.zip 
008KS08.zip 
008KS09.zip 

された試料:

Documentnummer,Versie,Status,Geocode,IDS datum,Documentgroep (Omsch),Documenttype (Wrd),Tekeningnummer 
550164,I,AB,008,26.03.2016,Themalagen OI,KS,008KS09.zip 
550163,D,AB,008,19.07.2013,Themalagen OI,KS,008KS08.zip 
550162,D,AB,008,19.07.2013,Themalagen OI,KS,008KS07.zip 
550161,C,AB,008,19.07.2013,Themalagen OI,KS,008KS06.zip 
550160,D,AB,008,19.07.2013,Themalagen OI,KS,008KS05.zip 
550159,E,AB,008,15.08.2014,Themalagen OI,KS,008KS04.zip 

だから、ファイルはCであると言うことができます:\テスト\
とCでCSV:\ drawings.csv
私はcsvファイルに不足しているファイルをしたいが、言うことができますC:\ missing.csv
最初、私は変数に1枚の図面にしようとした時 :

$drawnr = '008KS09.zip' 
$destcsv = "C:\missing.csv" 
Set-Location C:\test 
    If(Test-Path -Path ${drawnr}) { 
     Write-Output "${drawnr}'.zip' exists" 

    } Else { 

    Write-Output "${drawnr}'.zip' doesnt exist" 
    ${drawnr} | Export-Csv $destcsv -Append -NoTypeInformation 

} 

The output when having an existing and a non existsing drawing in the variable
これは完璧に動作しますが、イメージを参照してくださいが、入力としてCSVを使用すると、動作しません。

$sourcecsv = 'C:\drawings.csv' 
$destcsv = 'C:\missing.csv' 
Set-Location 'C:\test\' 

Import-Csv $sourcecsv | Select-object -Property Tekeningnummer | ForEach { 

    Write-Output "${_} is the current object" #For Testing purpuse 
If (Test-Path -Path ${_}) { 

    Write-Output "${_} does exist" 

    } Else { 

    Write-Output "${_} doesnt exist" 
    ${_} | Export-Csv $destcsv -Append -NoTypeInformation 
    } 
} 

これは、ファイルがどれも存在しないことを私に伝え、すべてが存在していながら:
これは私がこれまで持っているものです。
は、PowerShellのの出力とmissing.csv
The picture of the output where all files are reported as non existend

+0

何が '-ExpandProperty Tekeningnummer'オブジェクトを選択するか、またはその代わりに、各' $ {_}を '変更するために選択して、オブジェクト' -Property Tekeningnummer'を変更した場合'$ _。Tekeningnummer'。 –

答えて

0

に書かれた内容を表示する画像を参照してください。私はあなたの意図を取得わからないんだけど、これはうまくいくかもしれないように見えます。 ${_}が新しい構文であれば

$sourcecsv = 'C:\drawings.csv' 
$destcsv = 'C:\missing.csv' 
Set-Location 'C:\test\' 

Import-Csv $sourcecsv | ForEach { 

    Write-Output "${_} is the current object" #For Testing purpuse 
    $TK = $_.Tekeningnummer 
If (Test-Path -Path $TK) { 

    Write-Output "$TK does exist" 

    } Else { 

    Write-Output "$TK doesnt exist" 
    $_ | Export-Csv $destcsv -Append -NoTypeInformation 
    } 
} 
0

わからない私は認識していないが、私は私が私の答えに、通常の$_にそれを変更していますので、それは私のPS4ホスト上で動作させることはできません。それを超えて@DaveSextonが示唆するようにExpandPropertyを行うだけです。

Import-Csv $sourcecsv | Select-object -ExpandProperty Tekeningnummer | ForEach { 

Write-Output "$($_) is the current object" #For Testing purpuse 
If (Test-Path -Path $($_) { 

    Write-Output "$($_) does exist" 

} Else { 

    Write-Output "$($_) doesnt exist" 
    $_ | Export-Csv $destcsv -Append -NoTypeInformation 
} 
} 
0

はちょうどそれを行う;)

$sourcecsv = 'C:\drawings.csv' 
$destcsv = 'C:\missing.csv' 
$dirtest='C:\test\' 

Import-Csv $sourcecsv | where {-not (Test-Path "$dirtest$($_.Tekeningnummer)") } | export-csv $destcsv -NoTypeInformation 
関連する問題