删除文件名称的一部分

时间:2015-11-28 08:48:01

标签: windows batch-file command-line cmd mp3

我试图删除某个mp3名称的某个部分。 所以如果mp3是" X(2015)"我希望它识别"(2"并删除名称的其余部分,以便我可以每年删除它。

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
FOR /f "delims=" %%a IN (
  'dir /b /a-d "%sourcedir%\*(*.mp3" '
  ) DO (FOR /f "tokens=1delims=(" %%g IN ("%%a") DO ECHO(REN "%sourcedir%\%%a" "%%~g%%~xa"
)

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

为了测试目的,所需的REN命令仅为ECHO在您确认命令正确后,将ECHO(REN更改为REN以实际重命名文件。

处理/b基本表单中的目录列表,并将文件名分配给%%a。文件掩码仅选择包含(

的文件名 然后将

%%a分区为第一个(之前的部分和部分,以及分配到%%g之前的部分

然后是将命令串在一起的问题。

答案 1 :(得分:0)

奇怪的是,这个问题最困难的部分是在左括号之前消除空间。下面的批处理文件只删除新名称的最后一个字符;如果左paren之前的空格数可能是变量,则必须使用不同的方法。

@echo off
setlocal EnableDelayedExpansion

for /F "delims=" %%a in ('dir /B *(2*.mp3') do (
   for /F "delims=(" %%b in ("%%a") do set "name=%%b"
   ECHO ren "%%a" "!name:~0,-1!.mp3"
)

输出示例:

C:\> dir /B *.mp3
X (2015).mp3
Y (2012).mp3

C:\> test.bat
ren "X (2015).mp3" "X.mp3"
ren "Y (2012).mp3" "Y.mp3"