2017-08-24 6 views
0

ファイルサイズに基づいてファイルを移動する方法を見つけようとしています。私は私が探していたものを正確に見つけることができませんでした。私は特定のサイズのファイルだけを移動し、if/thenステートメントを実行する方法を見つけましたが、サイズに基づいて別の場所にファイルを移動することはできませんでした。Powershellファイルサイズに基づいている場合

なぜ私はこれを行う必要がありますか?実行中のexeは、データがない場合でも作成して出力します。したがって、ファイルが空であり、時にはデータがあることがあります。それが私が誰かに送られる必要があるデータを持っているとき、私は空のときに私はちょうど参考のためにバックアップフォルダにそれを望んでいた。読書の多くはsystem.ioと一緒に行った後:-cleがこの部分は空のファイルが存在するなら、私はチェックしてみましょう

$BlankFiles = Get-ChildItem c:\test\*.rej | where { $_.Length -cle 0kb} 

以下である:

この部分は私のサイズに基づいてファイルを移動しましょう.file over test-path

[System.IO.File]::Exists($BlankFiles) 

これをすべてIF/ELSE文に入れることは、私が苦労した問題でした。私が思いついた答えは以下の通りです。

私は正確なシナリオを見つけることができず、誰かが私が逃したこのアプローチの問題を見ているので、主にこれを投稿しています。

答えて

0

ここで私が思いついた解決策は、私が試したすべてのテストは意図したとおりに動作しているようです。注:これは、一度に1つのファイルでのみ行う必要があります。なぜこれが機能し、なぜ再帰的またはループステップを省いたのかです。

ファイルが空白の場合は、ファイルをバックアップフォルダに移動し、日付とともに追加します。データがある場合は、日付を含むコピーをバックアップフォルダに追加し、日付を付加したファイルを別の場所に移動しますそれは必要なユーザーがアクセス可能です。

私は、ファイルのサイズを超えてファイル内に何行目があるかを調べることを検討していましたが、ファイルが空白になると返されることがあります。だから、誰もがこの方法をやってすべての問題を参照するか、より良い提案を持っている場合、私はサイズメソッドの代わりに

$BlankFiles = Get-ChildItem c:\test\*.rej | where { $_.Length -cle 0kb} 

$date = Get-Date 
$fndate = $date.ToString("MMddyyyy") 

If ([System.IO.File]::Exists($BlankFiles) -eq "True") { 
Move-Item C:\test\*.rej c:\test\blankfiles -"$fndate".rej 
} 
Else { 
Copy-Item c:\test\*.rej c:\test\realfiles-"$fndate".rej 
Move-Item c:\test\*.rej c:\user\accessible\realfiles-"$fndate".rej -Force 
} 

と一緒に行きましたが、私は私のテストから述べたように、それは見事に働いているように見えると私は共有するだろうと思いました。

関連する問題