2016-05-25 14 views
1

特定のファイルタイプ(.txt、 .fehlerなど)のみを別のディレクトリに移動しようとしています。私は最後の修正日までに別々のフォルダにファイルを分けたい(年ごと)。ディレクトリが存在しない場合は、そのフォルダを作成する必要があります。ファイルタイプをフィルタリングしていない場合、次のコードが機能します。私は正しくフィルタリングするために何をする必要がありますか? これは、これまでの私のコードです:特定のファイルタイプのみをpowershellで移動する方法

$path = "H:\Downloads\tmp\source\" 
$targetDir = "H:\Downloads\tmp\dst\" 
Foreach($file in (Get-ChildItem $path -Include *.txt,*.fehler)) 
{ 
    $year = $file.LastWriteTime.Year 
    $pastePath = $targetDir + $year.ToString() 
    if(-not (Test-Path $pastePath) -and ($year.ToString().Length -eq 4)) 
    { 
     md $pastePath 
    } 
    $source = $path + $file 
    Move-Item $source $pastePath -Force 
} 

答えて

0

をフィルタが動作しない理由を私はまだ知りませんしかし、これは私のために働く:

$path = "H:\Downloads\tmp\source\" 
$targetDir = "H:\Downloads\tmp\dst\" 
Foreach($file in (Get-ChildItem $path | Where-Object {$_.Extension -match ".txt" -or ".fehler" })) 
{ 
    $year = $file.LastWriteTime.Year 
    $pastePath = $targetDir + $year.ToString() 
    if(-not (Test-Path $pastePath) -and ($year.ToString().Length -eq 4)) 
    { 
     md $pastePath 
    } 
    $source = $path + $file 
    Robocopy.exe $path $pastePath $file /MOV 
    <#Move-Item $source $pastePath -Force -Verbose#> 
} 
0

は、引用符でこのよう

あなたのextentionsを入れて:

Foreach($file in (Get-ChildItem $path -include "*.txt","*.fehler"))

+0

それを試みた - 動作しません。ファイルは移動されませんでした。ファイル名は次のようになります:4564160518161059_20160520_132701.TXT – Zoba

+0

また、 'ls -Filter "* .txt"をシェルで試してもうまく動作し、ファイルの末尾が大文字であっても探しているすべてのファイルが表示されます。 – Zoba

関連する問題