0
我有以下的CSV列表(在線路的現實1000):如何最有效地移動,重命名文件並記錄此操作?
needle,code 123456,AB 121212,BB 33333333,CVV
而且我有一個目錄(C:\old_files
)含有PDF文件(同樣,在現實中1000):
dsadsadsa.343222.dsads23213jkjl.saddsa.pdf dsadsadsa.123456.dsads23213jkjl.saddsa.pdf dsadsadsa.111111.dsads23213jkjl.saddsa.pdf dsadsadsa.33333333.dsads23213jkjl.saddsa.pdf dsadsadsa.33333333.fsdgdsfdsfdsf.dsad.pdf
對於在CSV每一針:
- 我要看看是否有包含針PDF(有可能是0個或多個匹配)
- 如果有比賽,我必須
- 使文件的副本到一個單獨的文件夾(
D:\new_files
) - 在前面加上相應的代碼名稱重命名複製的文件
- 寫的條目進入日誌。
- 使文件的副本到一個單獨的文件夾(
對於這個例子,我有123456
和2 33333333
一場比賽,所以我必須將這些文件的副本進入D:\new_files
,並將其重命名爲:
AB.dsadsadsa.123456.dsads23213jkjl.saddsa.pdf CVV.dsadsadsa.33333333.dsads23213jkjl.saddsa.pdf CVV.dsadsadsa.33333333.fsdgdsfdsfdsf.dsad.pdf
日誌文件會看起來像(格式needle,code,oldfilepath,newfilepath
):
123456,AB,C:\old_files\dsadsadsa.123456.dsads23213jkjl.saddsa.pdf,D:\new_files\AB.dsadsadsa.123456.dsads23213jkjl.saddsa.pdf 33333333,CVV,C:\old_files\dsadsadsa.33333333.dsads23213jkjl.saddsa.pdf,D:\new_files\CVV.dsadsadsa.33333333.dsads23213jkjl.saddsa.pdf 33333333,CVV,C:\old_files\dsadsadsa.33333333.fsdgdsfdsfdsf.dsad.pdf,D:\new_files\CVV.dsadsadsa.33333333.fsdgdsfdsfdsf.dsad.pdf
重要的是,我只循環遍歷目錄中的文件一次,因爲遍歷ForEach
循環中的所有文件對於每個needle
都需要太長時間。因此,與感謝這個論壇,我首先建立一個哈希表:
$pairs = @{}
Import-CSV .\data.csv | ForEach-Object { $pairs[$_.needle] = $_.code+"." }
Get-ChildItem "C:\old_files" | Rename-Item -NewName { "D:\new_files\" + $pairs[$_.Name.Split('.')[1]] + $_.Name }
我在這裏的第一個問題:我無法將文件移動到新文件夾。
Q1如何正確地將文件從C:\old_files
複製到D:\new_files
並重命名它?
我的第二個問題:我不明白我可以如何將代碼添加到上面的代碼。
Q2如何爲每個匹配創建日誌文件(因此:複製和重命名文件)?
請不要刪除並重新發布的問題。編輯您已發佈的問題並耐心等待。 –