根据Powershell中的大小重命名文件

slmsl1lt  于 2023-01-20  发布在  Shell
关注(0)|答案(3)|浏览(176)

我正在尝试重命名一个文件夹中大于5GB的文件。当我运行脚本时没有任何React,我不确定参数或重命名项是否正确。非常感谢帮助

$Path="C:\tmp\NPI_Archive"

Get-ChildItem $Path

$FileSizeLimit = ((5GB) -As [int])
$File = $Path -As [System.IO.FileInfo]
If ($File.Length -gt $FileSizeLimit)
{
    Rename-Item $Path "$($File.DirectoryName)\$($File.BaseName)"-NewName "$($File.DirectoryName)\$($File.BaseName)\NPI_Import.csv”
}
dbf7pr2w

dbf7pr2w1#

对于$FileSizeLimit变量,您尝试将5GB字节(5368709120)强制转换为Int32(最大值为2147483647)。由于该值太大,不适合作为Int32,因此引发InvalidCastException。将int更改为longInt64应可修复此问题。

$FileSizeLimit = ((5GB) -As [long])
wnrlj8wa

wnrlj8wa2#

当你重命名项目时,你添加了一个斜线,这是不允许在文件名中使用的。如果你试图创建另一个目录,请澄清。另外,我假设在那个目录中有多个文件,这将需要循环,因为Get-ChildItem可能会导致多个对象。让我知道这是否能为你修复它。
编辑:修正了指出的一个错字。

$Path="C:\tmp\NPI_Archive"
$File = Get-ChildItem $Path
$FileSizeLimit = 5kb
foreach($f in $File){
    If ($f.Length -gt $FileSizeLimit)
    {
        Rename-Item -path $f.FullName -NewName "$($f.BaseName)-NPI_Import.csv”
    } 
}
oknrviil

oknrviil3#

根据您的问题/脚本的措辞,我假设NPI_Archive是一个文件夹,在这种情况下,您的检查是针对该文件夹。

$File = $Path -As [System.IO.FileInfo]
If ($File.Length -gt $FileSizeLimit)

将导致它检查"C:\tmp\NPI_Archive"的大小,这是什么,所以它不会激发您的if语句。
您的重命名项也有一些错误,这取决于这是一个文件夹或文件中的路径语句的修复是不同的。

Rename-Item -path $File.FullName -NewName "$($file.BaseName)-NPI_Import.csv”

将修复它,如果它是一个实际的文件,也是你想使用的行,如果你修改它循环通过所有文件夹中的文件。
编辑-
你可能有三个问题,因为杰西也是正确的关于国际。

相关问题