我正在尝试为文件夹中的所有文件名添加前缀。
经过几天的搜索,我实际上想到了几乎可以完美运行的内容:
echo Please specify fileprefix
echo Your Choise??
set /p pre= ^
for %%i in (*.txt) do ren %%i "%pre%"%%i
问题是,如果前缀以文件名的第一个字符后的字母顺序开头,则第一个文件将被重命名两次。
这里是试图重命名三个文件时输出1.txt
,2.txt
并且3.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%
这似乎可以识别正确的(双前缀)文件名,但它不能执行任何操作(文件名不存在或文件名已经相同)。它应该删除文件名的前三个字符以给我正确的结果。
我只是认为必须有一些更好/更简便的方法来执行此操作,而不必进行错误检查和更正。
编辑:类似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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句