
У меня есть несколько PDF-файлов определенного формата в определенной папке, и для этих конкретных файлов мне нужно обрезать среднюю цифру с помощью bat-файла и переместить в папку назначения с новым именем.
Деталь
Исходная папка:
C:/roger/brawn
Место назначения:
D:/var/lag
Формат файла:
eAWI_12345678_89101112_01Mar2018.pdf
Желаемый результат
Мне нужно обрезать89101112
из исходного имени файла и получить результатeAWI_12345678_01Mar2018.pdf
Этот формат номера имени файла генерируется динамически с использованием переменных в приложении.
решение1
Вы можете использоватьДЛЯ /Фloop и установите символ подчеркивания в именах файлов в качестве разделителя. Вы можете использовать токены 1,2,3,*
для последующего объединения переменных для построения и анализа исходного и конечного имени файла для последующего использования сXКОПИРОВАТЬкоманду, чтобы получить желаемый результат.
Пакетный скрипт
@ECHO ON
SET Source=c:/roger/brawn
SET Destination=D:/var/lag
FOR /F "TOKENS=1,2,3,* DELIMS=_" %%F IN ('DIR /B /A-D "%source%\*.pdf"') DO ECHO F | XCOPY /Y /F "%source%\%%F_%%G_%%H_%%I" "%Destination%\%%F_%%G_%%I" && IF EXIST "%Destination%\%%F_%%G_%%I" DEL /Q /F "%source%\%%F_%%G_%%H_%%I"
EXIT
Примечание:TheЭХОкоманда передает данные F
вXКОПИРОВАТЬкоманда, поэтому она неявно выбирает F
«файл», поскольку она явно указывает новое имя файла назначения, анализируя 3-й токен в цикле, чтобы помочь получить желаемое имя файла.XКОПИРОВАТЬза командой следуетусловное исполнение (&&)подтверждая успешность, а затем он подтверждает существование нового целевого файла, прежде чем удалить исходный файл.