我试图删除某个mp3名称的某个部分。 所以如果mp3是" X(2015)"我希望它识别"(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"