如何使用批处理文件替换 Windows 文件名中的单个字符?

如何使用批处理文件替换 Windows 文件名中的单个字符?

我有一台 Windows Server 2003 服务器,上面有很多文件名需要重命名。基本上,我只需要将所有-(连字符) 替换为_(下划线),无论它们在文件名中的什么位置。假设没有重复。

我可以用一个小脚本在 Mac 上完成此操作,但文件太大,无法传输到 Mac、重命名,然后返回服务器。是否可以在 Windows 命令提示符中执行此操作,而无需下载重命名程序或任何其他软件?

答案1

从命令提示符 - 假设所有文件都位于同一目录中:

单行

for /f "tokens=* delims= " %i in ('dir /b "*.txt"') do Set LIST=%i& set LIST | ren "%~fi" "%LIST:-=_%"

请记住,每个命令提示符窗口只能运行一次。这意味着如果您因任何原因取消此操作,则需要打开另一个命令提示符并再次运行。

答案2

批处理文件将文件名中的一个字符替换为另一个字符

考虑使用免费的 GUI 应用程序来指导你:http://www.bulkrenameutility.co.uk/Main_Intro.php

如果你必须自己用批处理文件来做这件事,要特别小心! 批处理脚本没有“撤消”按钮。如果您在某个地方执行适用于所有文件的批处理脚本,例如C:,您刚刚重命名了计算机上的每个文件,它将立即停止工作并且无法启动。您必须重新安装整个操作系统。 始终要有备份!

首先,您必须决定是否要让批处理文件处理单个文件?处理目录中的所有文件?还是以递归方式执行(目录下的所有文件/文件夹)。以下是一些提示:

批处理文件将所有下划线替换为当前目录中所有文件的_字母M

将其放入名为change_underscores_in_this_directory.bat

@echo off
setlocal enabledelayedexpansion
for %%a in (*_*) do (
  set file=%%a
  ren "!file!" "!file:_=M!"
)

执行它,该目录中所有带下划线的文件都将更改为“M”。

使用批处理文件将空格替换为空(删除空格):

https://stackoverflow.com/questions/11270453/how-to-remove-spaces-from-file-names-in-bulk

使用批处理文件将空格替换为下划线,递归:

https://stackoverflow.com/questions/1613644/how-to-replace-names-recursively-via-windows-batch-operation

答案3

另一个解决方案是使用两个批处理文件。

文件 1:run_rn.bat:

forfiles /m "*.log" /c " cmd /c rn @file"

文件 2:rn.bat:

set LIST1=%1
set LIST2=%LIST1:_=;%
ren %LIST1% %LIST2%

批处理文件必须与您要更改的文件位于同一目录中。

答案4

12noon 有一个免费的实用程序可以进行大量文件重命名,并完全支持正则表达式,这非常酷。 “Name Twister”信息页面及下载链接

我没有愤怒地使用过这个,但是曾经使用过他们的其他应用程序(特别是显示器更换器)并且真的很高兴。

相关内容