Windows 重命名多个不带括号的文件/删除括号窗口

Windows 重命名多个不带括号的文件/删除括号窗口,windows,cmd,rename,Windows,Cmd,Rename,我想从任何地方开始,按数字的递增顺序重命名大量文件。 但是,当我重命名多个文件时,会留下括号。 例如,我将文件重命名为abc_u1;.jpeg,结果是abc_1;(1).jpeg,abc_1;(2).jpeg等等 我尝试使用命令提示符重命名 ren abc_(*).jpeg abc_*.jpeg 不起作用。可能是因为括号 ren abc_*”(“*”).jpeg abc_*.jpeg 重命名文件,但产生与以前相同的文件名。 我只是想以某种方式删除括号。要删除括号,您必须执行一些字符串操作。为此,

我想从任何地方开始,按数字的递增顺序重命名大量文件。 但是,当我重命名多个文件时,会留下括号。 例如,我将文件重命名为abc_u1;.jpeg,结果是abc_1;(1).jpeg,abc_1;(2).jpeg等等

我尝试使用命令提示符重命名

ren abc_(*).jpeg abc_*.jpeg

不起作用。可能是因为括号

ren abc_*”(“*”).jpeg abc_*.jpeg

重命名文件,但产生与以前相同的文件名。
我只是想以某种方式删除括号。

要删除括号,您必须执行一些字符串操作。为此,我编写了一个批处理文件(另存为
.bat


我不认为你可以很容易地从命令行一行完成这项工作,虽然这是可能的,但它不会很好。如果可以帮助它使用此批处理文件删除括号。

在文件资源管理器窗口中,选择所有文件,右键单击并选择重命名。Windows将选择起始数字作为圆括号之间提供的数字,因此使用比所需数字多1位的数字命名文件

示例:我们需要模式“test\u xxx”。使用文件资源管理器,将文件重命名为“tes(1000)”。您的文件现在将命名为[“tes(1000)”、“tes(1001)”、“tes(1002)”等。按住SHIFT键并在文件资源管理器的打开区域中单击鼠标右键,然后选择“在此处打开命令窗口”。发出以下命令:

ren *.* test_???.*

这会将所有文件重命名为正确的格式[“test_000”、“test_001”、“test_002”等]。

对该方来说有点晚,但这里有一个组合,即删除括号和自动创建的空白。此代码的工作原理是将.bat文件放在包含所有要修改的文件的文件夹中

复制并粘贴记事本中的代码,并将其另存为sequentialFileNameCleaner.bat

您的文件名必须与第一行中写入的文件名相同sequentialFileNameCleaner.bat。也就是说,如果要更改文件名,可以手动更新第一行

:sequentialFileNameCleaner  [/R]  [FolderPath]
setlocal enabledelayedexpansion
for %%a in (*.jpg) do (
set f=%%a
set f=!f:^(=!
set f=!f:^)=!
ren "%%a" "!f!"
)
@echo off
setlocal disableDelayedExpansion
if /i "%~1"=="/R" (
  set "forOption=%~1 %2"
  set "inPath="
) else (
  set "forOption="
  if "%~1" neq "" (set "inPath=%~1\") else set "inPath="
)
for %forOption% %%F in ("%inPath%* *") do (
  if /i "%~f0" neq "%%~fF" (
    set "folder=%%~dpF"
    set "file=%%~nxF"
    setlocal enableDelayedExpansion
    echo ren "!folder!!file!" "!file: =!"
    ren "!folder!!file!" "!file: =!"
    endlocal
  )

)

默认情况下,此代码将仅定位.jpg文件。在第三行,将
(*.jpg)
更改为
(*.png)
(*.mp4)
或任何您想要的扩展名都将使代码兼容。

当我们需要将包含文件名的特定括号列表传递给脚本时,问题就会出现。以下内容确实适用于此。在本例中,我们将括号更改为下划线

SET fileList=%*
SET delim1=aaaaaaaaaaaaa
SET delim2=zzzzzzzzzzzzz
setlocal enabledelayedexpansion
SET fileList=!fileList:^(=%delim1%!
SET fileList=!fileList:^)=%delim2%!
FOR %%f in (%fileList%) DO (
 SET f1=%%~f
 SET f1=!f1:%delim1%=^(!
 SET f1=!f1:%delim2%=^)!
 SET f2=%%f
 SET f2=!f2:%delim1%=_!
 SET f2=!f2:%delim2%=_!
 FOR %%i IN (!f2!) DO RENAME "!f1!" "%%~nxi"
)

+1,但在使用空格或其他特殊字符时,应在源名称和目标名称周围加引号。如果名称可以包含
,则还需要延迟扩展切换。此解决方案将删除所有参数。如果在下划线之前有其他参数,则可能会出现问题。谢谢。我想是的,但我只是根据OP中提出的要求来回答。如果问题变得更复杂,我将把它留给你:)如何重命名文件夹中的所有文件而不使用括号?很好的解决方案,就像一个字符一样工作,文件名以空格结尾,你知道如何去掉空格吗?感谢伟大的解决方案,因为它是一个单行程序。但在Windows 10上,“在此处打开命令窗口”已替换为“在此处打开PowerShell”。要获得与powershell相同的功能,请使用
$nr=1;Dir |%{Rename Item$\-NewName(“test{0:000}$($\.Extension)”-f$nr++)}
with
$n=1
用1初始化计数器。例如,要以较高的索引开始,请使用
$n=100
SET fileList=%*
SET delim1=aaaaaaaaaaaaa
SET delim2=zzzzzzzzzzzzz
setlocal enabledelayedexpansion
SET fileList=!fileList:^(=%delim1%!
SET fileList=!fileList:^)=%delim2%!
FOR %%f in (%fileList%) DO (
 SET f1=%%~f
 SET f1=!f1:%delim1%=^(!
 SET f1=!f1:%delim2%=^)!
 SET f2=%%f
 SET f2=!f2:%delim1%=_!
 SET f2=!f2:%delim2%=_!
 FOR %%i IN (!f2!) DO RENAME "!f1!" "%%~nxi"
)