Powershell IF ELSE基于文件大小

时间:2017-08-24 16:13:35

标签: powershell if-statement filesize

试图在powershell中找到一种允许我根据文件大小移动文件的方法。我找不到我想要的东西。我找到了如何移动只有一定大小的文件并执行其他if / then语句,但没有根据大小将文件移动到不同的位置。

为什么我需要/想要这样做?我正在运行的exe创建并输出,即使它没有数据。所以有时文件是空的,有时它有数据。当它有数据我需要它发送给某人,当它空了我只想在备份文件夹中作为参考。

这部分让我根据大小移动文件:-cle小于或等于

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

这一部分让我检查一个空文件是否存在:经过大量阅读后,使用system.io.file通过test-path

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

把这一切都放在IF / ELSE声明中是我遇到的问题。我想出的答案如下。

我主要发布这个,因为我找不到确切的情况,如果有人发现我错过了这种方法的问题。

1 个答案:

答案 0 :(得分:0)

这是我提出的解决方案,我所做的所有测试似乎都按预期工作。注意:我一次只需要在一个文件上执行此操作,这就是为什么这样做以及为什么我遗漏了递归或循环步骤。

如果文件为空白,则将其移至备份文件夹并附加日期,如果有数据则会附加日期附加到备份文件夹的副本,并将附加日期的文件移动到其他位置必要的用户可以访问。

我正在考虑使用check查看文件中文件大小超过文件大小的行数,但是当空白时有时会返回文件,有时它不会出现。所以我选择了尺寸方法

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

如果有人发现这样做有任何问题或有更好的建议,但正如我在测试中提到的那样,它似乎工作得非常好,我想我会分享。