Batch file 批重命名未在所有文件上运行

Batch file 批重命名未在所有文件上运行,batch-file,Batch File,我有这个批处理脚本,但它在少数文件上工作,有时不工作。我不明白错误在哪里。是否有任何方法可以测试tehscript是否已在所有文件上运行 @echo off&cls setlocal EnableDelayedExpansion for /f "tokens=1-4 delims=_." %%a in ('dir /b /a-d *.JPG') do ( echo %%a_%%b_%%c.%%d set $Char=%%b set $CharF=!$Char:~0,4!-!$Char:~

我有这个批处理脚本,但它在少数文件上工作,有时不工作。我不明白错误在哪里。是否有任何方法可以测试tehscript是否已在所有文件上运行

@echo off&cls
setlocal EnableDelayedExpansion
for /f "tokens=1-4 delims=_." %%a in ('dir /b /a-d *.JPG') do (
echo %%a_%%b_%%c.%%d
set $Char=%%b
set $CharF=!$Char:~0,4!-!$Char:~4,2!-!$Char:~6,2!_!$Char:~8,2!-!$Char:~10,2!-!$Char:~12,2!
echo !$CharF!
ren %%a_%%b_%%c.%%d %%a_%%c_!$CharF!.%%d
)
文件

NoName_20140603133008976_DONCASTER.jpg
NoName_20140603132507734_DONCASTER.jpg

您发布的脚本工作得很好,但只要查看您发布的示例数据,如果您仔细观察,就会发现存在两个重复的文件名,如下所示

NoName_20140603124452955_DONCASTER

NoName_20140603131541932_DONCASTER
您的脚本将无法执行重命名操作,因为存在重复的文件名,因为这些文件都是重复的,而您抱怨说
脚本不会重命名这些文件


希望这是有意义的。

刚刚试过,效果很好。在您认为不可行的地方发布一些示例文件名。这是可以测试的。是的,拉胡尔,当我们只有几个的时候,它是有效的,当我有至少10个的时候,它们中的很少一个不会改变<代码>NoName_20140603124451995_DONCASTER.jpg',NoName_20140603124452635_DONCASTER.jpg,NoName_20140603124452955_DONCASTER.jpg,NoName_20140603124453475_DONCASTER.jpg,NoName_20140603125236880_DONCASTER.jpg,NoName_20140603131541692_DONCASTER.jpg,NoName_20140603132106530_DONCASTER.jpg,NoName_20140603132106850_DONCASTER.jpg,NoName_20140603132107370_DONCASTER.jpg,Hi Rahul你能试试这些文件吗?如果工作正常,请告诉我一声?我不能代表你做测试。对照这些文件检查你的脚本,如果你发现有任何文件名没有重命名,请将该文件名作为注释发布。不,Rahul,我已经测试过了。问题是它在某些文件上不起作用,当为相同的文件再次运行此脚本时,它工作正常。这就是我被卡住的原因。。我只是想知道我哪里做错了。。