成功移除一堆Google云端硬盘文件夹副本后,某些文件保留“文件名(2)”的名称。
有没有办法批量重命名每个文件,所以圆括号和括号内的数字已经消失?
这包括文件夹和子文件夹。
这将创建renfiles.bat.txt
供您在记事本中检查,然后重命名为.bat
并执行,如果您满意的话。
@echo off dir /b /ad *(*).* |find /i /v "%~nx0" |find /i /v "repl.bat" |repl "(.*)\(.*\)(\..*)" "ren \q$&\q \q$1$2\q" xa >"renfiles.bat.txt"
这使用一个称为repl.bat
的帮助程序批处理文件 – 从以下网址下载: https : repl.bat
将repl.bat
放在与批处理文件相同的文件夹中或位于路径上的文件夹中。
编辑:这个版本将递归通过子目录:
@echo off dir /b /s /ad *(*).* |find /i /v "%~nx0" |find /i /v "repl.bat" |repl ".*\\(.*)\(.*\)(\..*)" "ren \q$&\q \q$1$2\q" xa >"renfiles.bat.txt"
尝试像这样:
用下面的代码创建一个文件test.bat,并替换var $path
要测试的$path
@echo off set $path="C:\Users\CN Micros\Desktop\PROGRAMMATION\test" for /f "tokens=1-3 delims=^(^)" %%a in ('dir /b/ad %$path%') do ( if exist %$path%\"%%a(%%b)%%c" echo ren %$path%\"%%a(%%b)%%c" "%%a%%c" ) pause
然后在CMD中运行或双击。 如果输出正确,则删除echo
程序创建3个令牌: %%a
=(), %%b
之前的内容()和( %%c
)之后的内容是什么()。
然后,我们安排这3个令牌来重命名没有()的文件。
如果你有一些文件的名字相同,比如: "file(1)name"
, "file(2)name"
– > "filename"
它只能和第一个"filename"
工作。 如果你有这种情况,你必须在文件末尾添加一个计数器,以确保它们将被重命名。
@ECHO OFF SETLOCAL SET "sourcedir=U:\sourcedir" FOR /f "delims=" %%a IN ( 'dir /b /s /ad "%sourcedir%\*" ' ) DO ( SET "name=%%~na" SETLOCAL ENABLEDELAYEDEXPANSION SET "newname=!name:)=!" SET "newname=!newname:(=!" IF "!name!" neq "!newname!" ( IF EXIST "%%~dpa!newname!%%~xa" (ECHO cannot RENAME %%a ) ELSE (ECHO(REN "%%a" "!newname!%%~xa") ) endlocal ) GOTO :EOF
你需要将你需要的目录设置为sourcedir
。 我使用了适合我测试的u:\sourcedir
。
所需的REN命令仅用于测试目的。 在确认命令正确后 ,将ECHO(REN
改为REN
重新命名文件。