2015-11-28 4 views
0

Я пытаюсь удалить определенную часть имени mp3. Так что, если mp3 является «X (2015)» Я хочу, чтобы это признать «(2» и удалить остальную часть имени, так что я могу удалить его в течение каждого года.Удаление части файла

+0

Попробуйте это решение: [http://stackoverflow.com/a/26875241/3710490](http://stackoverflow.com/a/26875241/3710490) – Valijon

+1

Приведите яркий пример, пожалуйста. –

+0

file1 = "X (2015)" -> файл 1 = "X"; file2 = "Y (2012) -> file2 =" Y " –

ответ

0

Любопытно, что наиболее сложной частью этой проблемы является устранение пространства перед левой скобкой. Пакетный файл ниже просто удаляет последний символ нового имени; если число пробелов перед левым парнем может быть переменным, то следует использовать другой подход.

@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" 
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

Это то дело нанизывая команды вместе.

Смежные вопросы