通过Windows批处理重命名具有不同扩展名的文件

通过Windows批处理重命名具有不同扩展名的文件,windows,loops,batch-file,for-loop,file-rename,Windows,Loops,Batch File,For Loop,File Rename,我花了两天的时间来研究这个问题,我几乎看了所有我能找到的论坛文件。以下是场景: 我有成千上万的图像文件:img_123.jpg、img_124.cr2、img_125.mov等等,我需要它们的名称:64001.jpg 64002.cr2 64003.mov等等。基本上是重命名文件,同时保持原始扩展名不变,同时在千位放置逗号 多亏阅读了有关堆栈溢出的有用问答,我能够编写以下内容:A)连续重命名文件,但不使用逗号(64001.jpg 64002.cr2 64003.mov等);或者B)仅重命名唯一类

我花了两天的时间来研究这个问题,我几乎看了所有我能找到的论坛文件。以下是场景:

我有成千上万的图像文件:img_123.jpg、img_124.cr2、img_125.mov等等,我需要它们的名称:64001.jpg 64002.cr2 64003.mov等等。基本上是重命名文件,同时保持原始扩展名不变,同时在千位放置逗号

多亏阅读了有关堆栈溢出的有用问答,我能够编写以下内容:A)连续重命名文件,但不使用逗号(64001.jpg 64002.cr2 64003.mov等);或者B)仅重命名唯一类型的第一个文件(img_123.jpg变为64001.jpg,而img_124.jpg img_125.jpg等)。每个文件都会失败,并出现一个错误,表明文件名不唯一

这是我的代码:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
设置“sourcedir=c:\sourcedir”
设置/a数量=64000
对于/f“delims=”%%a IN(
'dir/b/a-d”%sourcedir%\*“'
)做(
如果!num!lss 1000000(
设置“newname=!num:~0,-3!,!num:~-3!”
)否则(
设置“newname=!num:~0,-6!,!num:~-6,3!,!num:~-3!”
)
ECHO REN“%sourcedir%\%%a”!newname!%%~xa
SET/a num+=1
)
后藤:EOF
您需要做的就是设置
sourcedir
,以适应您的系统


所需的REN命令仅用于测试目的。
ECHO
ed。验证命令正确后,将
ECHO-REN
更改为
REN
,以实际重命名文件。

以下是有效的方法,感谢Magoo提出了95%的方法

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=G:\ch\dos batch tests\# Projects\see if you can insert a coma"
SET /p num=enter the next higher image number here:  
FOR /f "delims=" %%a IN (
  'dir *.jpg *.cr2 *.mov /b /a-d "%sourcedir%\*.jpg *.cr2 *.mov" '
 ) DO (
 IF !num! lss 1000000 (
  SET "newname=!num:~0,-3!,!num:~-3!"
 ) ELSE (

  SET "newname=!num:~0,-6!,!num:~-6,3!,!num:~-3!"
 )
 REN "%sourcedir%\%%a" "!newname!%%~xa"
 SET /a num+=1
)

GOTO :EOF

在文件名中使用逗号可能是一个坏主意,因为它不是Windows中短(8.3)名称的有效字符。谢谢您的及时回复。我听到了。我的代码中是否有任何内容在增加“计数器”方面发出了红旗一个?我知道的不多,但我认为SET/a只用于数值。Magoo:你真是个摇滚人!我修复了导致它作用于目录中每个文件的位,但你修复了更大的重命名问题,对此我很感激!!!哇!你真是个天才!!它重命名了文件夹中的所有内容。这不好,但也许我可以解决这个问题通过改变第6行(dir限定的位置),这里是起作用的代码:@ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET“sourcedir=G:\ch\dos batch tests\#Projects\see是否可以插入一个coma”SET/p num=在这里输入下一个更高的数字:FOR/f“delims=”%%a IN('dir*.jpg*.cr2*.mov/b/a-d”%sourcedir%*.jpg*.cr2*.mov)如果!num!lss 1000000(设置“newname=!num:~0,-3!,!num:~-3!”)或者(设置“newname=!num:~0,-6!,!num:~-6,3!,!num:~-3!”)REN“%sourcedir%\%a”“!newname!%~xa”设置/a num+=1)转到:EOF