成功移除一堆Google Drive Folder副本后,某些文件会保留"文件名(2)"名称。
有没有办法批量重命名每个文件,所以括号和括号内的数字都消失了?
包括文件夹和子文件夹。
答案 0 :(得分:3)
试试这样:
使用下面的代码创建一个文件test.bat,并在var $path
@echo off
set $path="C:\Users\CN Micros\Desktop\PROGRAMMATION\test"
for /f "tokens=1-3 delims=^(^)" %%a in ('dir /b/a-d %$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"
它只适用于第一个。如果你有这种情况,你必须在文件末尾添加一个计数器,以确保它们将被重命名。
答案 1 :(得分:2)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "delims=" %%a IN (
'dir /b /s /a-d "%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
。 在您确认命令正确后,将ECHO(REN
更改为REN
以实际重命名文件。
答案 2 :(得分:2)
这将创建renfiles.bat.txt
供您在记事本中检查,然后重命名为.bat
并执行,如果您对此感到满意。
@echo off
dir /b /a-d *(*).* |find /i /v "%~nx0" |find /i /v "repl.bat" |repl "(.*)\(.*\)(\..*)" "ren \q$&\q \q$1$2\q" xa >"renfiles.bat.txt"
这使用名为repl.bat
的帮助程序批处理文件 - 从https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat
将repl.bat
放在与批处理文件相同的文件夹中或放在路径上的文件夹中。
编辑:此版本将通过子目录进行递归:
@echo off
dir /b /s /a-d *(*).* |find /i /v "%~nx0" |find /i /v "repl.bat" |repl ".*\\(.*)\(.*\)(\..*)" "ren \q$&\q \q$1$2\q" xa >"renfiles.bat.txt"