2017-08-24 97 views
0

試圖在PowerShell中找到一種方法,允許我根據其大小移動文件。我找不到我正在尋找的東西。我發現如何移動只有一定大小的文件,並執行其他if/then語句,但不會根據文件的大小將文件移動到不同的位置。基於文件大小的Powershell IF ELSE

爲什麼我需要/想要這樣做?即使沒有數據,我正在運行的exe也會創建並輸出。所以有時文件是空的,有時它有數據。當它有數據時,我需要將它發送給某人,當它爲空時,我只是希望它在備份文件夾中供參考。

這部分讓我移動文件基於大小:-cle小於或等於

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

這部分讓我檢查,如果一個空文件存在:大量的閱讀與system.io去後.file over test-path

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

把這些全部放在IF/ELSE語句中是我努力的問題。我想出了答案如下。

我主要是發佈這個,因爲我找不到確切的場景,如果有人看到我錯過了這種方法的問題。

回答

0

這是我提出的解決方案,它所做的所有測試似乎都按預期工作。注意:我只需要一次對一個文件執行此操作,這就是爲什麼這會起作用,並且爲什麼省略了遞歸或循環步驟。

如果文件爲空白,則將其移動到備份文件夾並添加日期,如果它有數據,則將日期附加到備份文件夾並將日期附加到另一位置這是必要的用戶可以訪問的。

我在考慮去檢查文件中文件大小的文件行數,但是當文件空白有時會返回內容並且有時不會顯示文件時。所以,我有大小方法,而不是

$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 
} 

去。如果任何人看到任何問題做這樣或有更好的建議,但我從我的測試中提到這似乎是奇妙的工作,我想我也有同感。