【发布时间】:2020-01-22 23:58:51
【问题描述】:
我正在尝试重命名现有文件夹中大于 5gb 的文件。当我运行脚本时没有任何反应,我不确定参数或重命名项是否不正确。非常感谢您的帮助
$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”
}
【问题讨论】:
-
NPI_Archive 是文件还是文件夹?
-
[1] 您的
$File变量中没有文件。相反,它有一个目录。 ///// [2] 你的"$($File.DirectoryName)\$($File.BaseName)"正在添加一个双精度\`in the directory name. the value comes back asc:\\tmp` 如果那里有真实路径。如果没有这样的路径,那么你会得到c:\tmp。 ///// [3] 目录在.Length属性中没有任何值。你总是会从中得到零。 ///// [4] 您将5gb转换为[int]将不起作用,因为这对于标准int 来说太大了。你需要int64。 -
如果您要使用
-Asoperator,请记住您需要为$null实际测试结果 以查看转换是否成功。但是,通常情况下,如果您知道一个对象是(应该是)特定类型,您会使用cast operator(例如$File = [System.IO.FileInfo] $Path),如果不能进行强制转换,则会引发错误执行。
标签: powershell