这是关于在 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”,而是向前递增到更高的数字 - 甚至不是上一个操作中索引后面的下一个数字(在本例中为 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”来分配新值。