我是一个有用的助手,可以为您翻译文本。
我正在遇到一个持续的问题,我已经编写了一个脚本,它(应该)完成以下操作。
我有一个包含多个csv文件的文件夹,并且我想将最新的公司名称文件复制到另一个文件夹中,并将其重命名。
目前格式如下:
21Feb17070051_CompanyName_Sent21022017
我希望您能按照以下格式提供内容:
我想要以下格式:
CompanyName21022017
所以我有以下的PowerShell脚本来完成这个任务:
## Declare variables ##
$DateStamp = get-date -uformat "%Y%m%d"
$csv_dest = "C:\Dest"
$csv_path = "C:\Location"
## Copy latest Company CSV file ##
get-childitem -path $csv_path -Filter "*Company*.csv" |
where-object { -not $_.PSIsContainer } |
sort-object -Property $_.CreationTime |
select-object -last 1 |
copy-item -Destination $csv_dest
## Rename the file that has been moved ##
get-childitem -path $csv_dest -Filter "*Company*.csv" |
where-object { -not $_.PSIsContainer } |
sort-object -Property $_.CreationTime |
select-object -last 1 | rename-item $file -NewName {"Company" + $DateStamp + ".csv"}
文件复制似乎没有问题,但重命名失败 -
Rename-Item : Cannot bind argument to parameter 'Path' because it is null.
At C:\Powershell Scripts\MoveCompanyFiles.ps1:20 char:41
+ select-object -last 1 | rename-item $file -NewName {"CompanyName" + $DateSt ...
我觉得这可能与powershell的工作顺序有关,或者它无法看到$file变量中的.csv文件有关。如果目标位置中还有其他文件(文本文件、批处理文件),可能会影响事情的进行。 如果能帮忙找出问题所在,将不胜感激。
$file
未定义且不需要。该 cmdlet 会从管道中获取文件参数。 - wOxxOm