我正在尝试为文件夹中的所有文件名添加前缀。
经过几天的互联网搜索,我实际上想出了一些几乎完美的东西:
echo Please specify fileprefix
echo Your Choise??
set /p pre= ^
for %%i in (*.txt) do ren %%i "%pre%"%%i
问题是,如果前缀以文件名第一个字符之后的字母顺序的字符开头,则第一个文件将被重命名两次。
以下是尝试重命名测试文件夹中的三个文件1.txt
、和 3.txt时的输出:2.txt
Your Choise??
pre
D:\rntest>ren 1.txt "pre"1.txt
D:\rntest>ren 2.txt "pre"2.txt
D:\rntest>ren 3.txt "pre"3.txt
D:\rntest>ren pre1.txt "pre"pre1.txt
给我留下了三份文件pre2.txt
,pre3.txt
prepre1.txt
问题似乎是在处理过程中,第一个文件会自动按字母顺序排序。因此,第一个文件被移到底部,因此需要再次处理。但是,我不知道这是否是实际发生的情况。
在初始重命名之后,我尝试摆弄调试以再次重命名文件。
以下是代码
for %%i in ("%pre%""%pre%"*) do ren %%i %%i:~3%
这似乎可以识别正确的(双前缀)文件名,但它没有做任何事情(文件名不存在或已经有一个相同的文件名)。它应该删除文件名的前三个字符才能给我正确的结果。
我只是认为一定有更好/更简单的方法来做到这一点,而无需检查错误和纠正。
答案1
编辑:与 nerdwaller 评论的类似
您可以dir
在循环中使用该命令for /f
来帮助您实现预期的行为,如下所示:
@echo off
echo Please specify fileprefix
echo Your Choise??
set /p pre=
for /f "tokens=1* delims=" %%i in ('dir /b /o:-n /a:-d *.txt') do ren "%%i" "%pre%%%i"
dir
命令开关解释:
/b - Uses bare format (no heading information or summary).
/o:-n - Sort backwards (helps when you have file named similar names like 1.txt and 11.txt)
/a:-d - Don't give any directories (give files only)
答案2
我发现了一个非常强大的免费实用程序,叫做批量重命名实用程序用于修改 Windows 文件名。
效果很好,我通过 PayPal 捐赠了一些钱;