我有以下powershell脚本,在将文件移动到目标文件夹后,使用当前日期重命名该文件:
##DateStamp
$DateStamp = get-date -uformat "%Y%m%d"
$files = @(get-childitem C:\PowershellTesting\FolderTwo\*.csv)
foreach ($file in $files)
{
get-childitem | rename-item $file -NewName {"CompanyName" + $DateStamp + ".csv"}}
该脚本实际上可以重命名文件,虽然它仍然给我多次迭代这个错误:
rename-item : Cannot rename because item at 'C:\PowershellTesting\FolderTwo\17Feb17082308_CompanyName_20170217.csv' does not exist.
At line:11 char:18
我猜这是因为一旦文件被重命名,循环就不会退出,因为只有一个。鉴于它有效,我猜测我错过了一些简单的东西,可以帮助我摆脱错误?
答案 0 :(得分:1)
get-childitem | rename-item $file -NewName {"CompanyName" + $DateStamp + ".csv"}}
您的工作目录将返回并传递给Rename-Item
每个csv 。删除Get-ChildItem
并使用重命名项,因为无论如何您都将文件对象设为$file
。这将是获得您想要的最小变化。
$file | rename-item -NewName {"CompanyName" + $DateStamp + ".csv"}}
我会提醒您重命名逻辑,因为每个文件都会尝试获取相同的名称。如果在同一目录中,您将遇到冲突。
这可以缩短为以下内容。请记住,上述警告仍然适用
$DateStamp = get-date -uformat "%Y%m%d"
Get-ChildItem "C:\PowershellTesting\FolderTwo\*.csv" |
Rename-Item -NewName {"CompanyName" + $DateStamp + ".csv"}