use*_*268 6 windows batch-file batch-rename
假设我有多个文件
filename.a.txt
filename.b.txt
filename.c.txt
Run Code Online (Sandbox Code Playgroud)
我想运行一个以所有 .txt 文件为目标的批处理文件,并将它们重命名为我在自定义 %filename% var 中设置的任何内容
filename.1.txt
filename.2.txt
filename.3.txt
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经写了这个:
set filename=FileTitle
for /r %%i in (*.txt) do call ren %%i %filename%.txt
Run Code Online (Sandbox Code Playgroud)
它可以工作,但问题是它只是选取第一个 .txt 文件并为其提供 FileTitle 文件名,仅此而已。我无法弄清楚如何批量重命名所有 .txt 文件,并为它们提供唯一的序列号作为输出的前缀/后缀/自定义变量%filename%.txt,例如%filename%-%uniquesuffix%.txt. 所以我需要设置某种变量,为每个文件提供一个唯一的数字,例如按字母顺序从 1 到 99(cmd 提示选择文件的默认顺序)。
我确实搜索了其他答案,但它们只显示了如何向重命名的文件添加全局/相同前缀。
@echo off
setlocal EnableDelayedExpansion
set filename=FileTitle
set suffix=100
for /F "delims=" %%i in ('dir /B *.txt') do (
set /A suffix+=1
ren "%%i" "%filename%-!suffix:~1!.txt"
)
Run Code Online (Sandbox Code Playgroud)
此代码以您请求的形式重命名文件。请注意,数字后缀有两位数字,以保留文件的原始字母顺序。如果使用了“自然” 1-99的数字,然后在命令提示符显示订单中的文件以这种方式改变:1.txt 10.txt 11.txt ... 19.txt 2.txt 20.txt 21.txt ... 29.txt 3.txt ...(字母顺序,而不是数字之一)。如果可能超过 99 个文件,只需在set suffix=100命令中添加另一个零即可生成三位数后缀。
另请注意,您的普通for命令可能会处理某些文件两次或更多次,具体取决于将重命名文件放置在原始文件列表中的站点。为了避免这个问题,请使用一个for /F命令而不是dir /B *.txt一个。此方法首先获取所有文件的列表,然后在这样的静态列表上执行重命名。
要处理当前文件夹下的所有文件(这是您/r在for命令中切换的目的),只需在命令中添加一个/S切换即可dir。
| 归档时间: |
|
| 查看次数: |
12468 次 |
| 最近记录: |