我有一個查找特定檔案名的腳本,并將它們復制到另一個目的地。沒問題,我需要幫助的是在目標檔案夾中給每個檔案一個 _date/time
像復制的檔案file1一樣獲取名稱file1_20220427
我現在的腳本如下:
$search_folder = "H:\SOURCE"
$destination_folder = "H:\DEST"
$file_list = @("file1","file2")
foreach ($file in $file_list)
{
$file_to_move = Get-ChildItem -Path $search_folder | % { $_.FullName}
if ($file_to_move)
{
Copy-Item $file_to_move $destination_folder
}
}
uj5u.com熱心網友回復:
在不修改太多代碼的情況下,不需要foreach回圈,因為您可以直接通過管道傳遞到Copy-Item:
$search_folder = "H:\SOURCE\*"
$destination_folder = "H:\DEST\"
$file_list = "file1*","file2*"
Get-ChildItem -Path $search_folder -Include $file_list -File|
Copy-Item -Destination {
$destination_folder ($_.BaseName "_" (Get-Date).ToString("yyyyMMdd") $_.Extension)
}
這是可行的,因為Copy-Item可以接受一個腳本塊,您可以在其中修改目標路徑以包含串聯結果。所需要的只是提供目標路徑、保留名稱開頭的basename屬性、以 . 格式附加日期yyyMMdd以及保留檔案型別的擴展名。
另外,請注意使用-Include. 此引數可以接受名稱陣列來搜索您需要提供全名(包括擴展名)的位置,或者使用通配符(星號 -*)在其中提供部分名稱,以便我們擺脫該foreach陳述句。
- 使用時唯一的問題
-Include是它是PowerShell提供搜索過濾器的解決方案,而不是基于檔案系統提供程式的解決方案。 - 因此,源路徑必須在檔案夾路徑的末尾包含一個星號,否則
-Recurse需要使用。
現在,您的檔案名應該反映在您的目標檔案夾中file1_20220427,file2_20220427依此類推。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/466220.html
