用批处理文件重命名文件夹中的所有文件

Posted

技术标签:

【中文标题】用批处理文件重命名文件夹中的所有文件【英文标题】:rename all files in a folder with batch file 【发布时间】:2016-03-26 02:16:54 【问题描述】:

我可以吗?我试过了,但它不起作用

for %%a in (*.*) do ren sdel%random%.sdel %%a

我也试过了

ren *.????? sdel%random%.sdel

我做错了什么?

【问题讨论】:

看起来就像你在 dostips 上提出的问题,我告诉过你两次你的重命名是向后的。 如果你对 c++ 没问题,我可以做到。这是微不足道的。 【参考方案1】:

试试这个:

@echo off
setlocal EnableDelayedExpansion
for %%a in (*.*) do (
if not "%~nx0"=="%%a" ren "%%a" "sdel!random!.sdel"
)

在 for 循环中,您应该使用 EnableDelayedExpansion 并使用 !而不是 % 变量。请注意,我还添加了一个 if 检查,因此您不会重命名批处理文件本身。如果您不这样做,它将重命名批处理文件,然后无法找到自己,并且不会重命名任何其他文件。

【讨论】:

谢谢丹尼斯,但如果文件名包含空格,代码不会改变,有没有办法解决这个问题? 如果路径可能包含空格,请在其周围加上引号(或者随后将它们放在任何路径或文件名周围):ren "%%~a" "sdel!random!.sdel" 如果你觉得我的回答解决了你的问题,你应该点击它左边的对勾将它标记为正确

以上是关于用批处理文件重命名文件夹中的所有文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Windows 批处理脚本重命名目录中的所有文件

使用 Windows 批处理脚本重命名目录中的所有文件

Windows 批处理脚本用它的第一行重命名 PDF 文件(循环可能)?

bat批处理文件夹下所有子文件夹下最后一个的文件重命名?

DOS按规则批量重命名所有(子)目录下文件

用cmd和批处理中的数字序列重命名多个文件