這是一個有關在 Windows Home 64 位元桌上型電腦上執行 Window PowerShell 的問題。
我正在將大約一百個資料夾的照片檔案名稱從相機和掃描器等更改005_2.JPG
為詳細的檔案名,如Some Kid Riding a Bicycle
.
我正在使用 Windows PowerShell 命令:
Dir | %{Rename-Item $_ -NewName ("Some Kid Riding a Bicycle-{0}.jpg" -f $nr++)}
這運行良好。
但是,當我只是CD\ 到下一個資料夾並用新字串替換新資料夾中的新主題時,附加到檔案名稱的“索引”編號不會重置回“1”,而是會向前遞增到更高的值number——甚至不是上一個操作中索引後面的下一個數字(在本例中為 111)。
如果最後一個操作中的最後一個索引是“111”,如下例所示:
-a---- 2/4/2020 8:02 PM 404601 Some Kid Riding a Bicycle-111.jpg
然後我 cd\ 到包含 8 個檔案的資料夾:
Mode LastWriteTime Length Name
-a---- 1/16/2020 11:39 PM 598118 018_15.JPG
[6 lines omitted here]
-a---- 1/16/2020 11:39 PM 727598 DSC017.jpg
並運行:
> Dir | %{Rename-Item $_ -NewName ("Some Old Guy Riding a Bicycle-{0}.jpg" -f $nr++)}
在該資料夾中,輸出序列中的下一個檔案名稱是:
-a---- 1/16/2020 11:39 PM 598118 Some Old Guy Riding a Bicycle-120.jpg
看起來索引向前跳躍了新目標資料夾中的檔案數量。我想知道是否涉及最後幾個字元-f $nr++
),但我在我貧乏的庫中沒有找到任何對這樣的字串的引用。
如何解決此問題,使其以 -1(或其他預設值)重新開始?
答案1
$nr 是您的變量,您可以使用每個命令不斷迭代它的值。它的範圍是您的 PWSH 會話。只要您的會話打開,$nr 值就會不斷增加,除非您透過發出指令「$nr = 1」來指派新值。