【问题标题】:Batch remove parenthesis from file name从文件名中批量删除括号
【发布时间】:2014-07-06 02:17:30
【问题描述】:

成功删除一堆 Google Drive 文件夹重复后,一些文件保留了“filename(2)”名称。

有没有办法批量重命名每个文件,使括号和括号内的数字消失?

这包括文件夹和子文件夹。

【问题讨论】:

  • 我以前做过这个,当时我在测试'owncloud',但是,因为你不能使用带括号的for循环,这很痛苦。正如 PA 上面问的,到目前为止,您尝试过什么?

标签: windows batch-file cmd rename batch-processing


【解决方案1】:

试试这样:

使用下面的代码创建一个文件 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" 它只适用于第一个。如果您遇到这种情况,您必须在文件末尾添加一个计数器以确保它们将被重命名。

【讨论】:

  • 原谅我的无知。你如何运行这段代码?我试图通过 CMD 运行它,但没有结果。我编码经验不足。
  • 请在您的答案中提供代码的解释,这将有助于未来的读者。
  • 非常感谢您的帮助!
  • 老肿块,对不起,但是如何处理“我的文件(1).jpg”的情况下删除前面的空格以防止扩展名前面的空格?
  • 用字符串替换:set "file=My File(1).jpg" 然后set "file=%file: =%"
【解决方案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"

【讨论】:

【解决方案3】:
@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 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(REN 更改为REN 以实际重命名文件。

【讨论】:

    猜你喜欢
    • 2012-04-28
    • 2021-09-12
    • 2014-10-28
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多