使用.bat更改文件名

时间:2019-05-09 09:00:56

标签: batch-file cmd

嗨,我是刚开始批量处理的人,对我的.bat文件重命名有疑问。

我查看了以下解决方案,并尝试将其转移到我的问题中: Renaming file names with a BAT file

所以我的.bat像这样:

setlocal enabledelayedexpansion
set /a count=1
set padded_count=000!count!
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
    ren "%%a" !padded_count!.txt
    set /a count+=1
)

我有一个随机名称为.txt数据的文件。 例如

abc.txt
def.txt
123.txt
456.txt

我想将它们更改为:

0001.txt
0002.txt
...

但是当我使用.bat时,它只是第一个更改其名称的.txt。 你能解释一下为什么吗?我应该怎么做才能得到所有这些。

或者使用cmd中的REN使用“ ren * .txt ___”之类的东西来处理此问题,是否有可能

2 个答案:

答案 0 :(得分:2)

setlocal enabledelayedexpansion
set /a count=10001
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
    ren "%%a" !count:-4!.txt
    set /a count+=1
)

其中!count:-4!选择count的最后4个字符。

答案 1 :(得分:1)

在您对要求进行评论之后,这类似于@Magoo的答案,但我并没有将其限制为4个字符。

@echo off
setlocal enabledelayedexpansion
set count=10000
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
    if "!count:~1!" == "9999" set count=100000
    set /a count+=1
    echo ren "%%a" !count:~1!.txt
)

在这种情况下,一旦我们达到9999,我们将设置一个新的count变量,这样文件将以另外一位数字继续。

ren "file9999.txt" 9999.txt
ren "file10000.txt" 00001.txt
ren "file10001.txt" 00002.txt
...