Я использую оконную ОС, и я скачал видео как урок серии. Я хотел бы заказать эти видео по дате и добавить номер префикса для первого видео как 1, чем 2, 3 ..... Я нашел ответ здесь How to rename and add incrementing number suffix on multiple files in Batch Script? он может добавить номер в имя файла, но может заказывать только имя, а не дату. Спасибо и извините за мой английский.Как добавить порядковый номер префикса числа по дате в нескольких файлах в Batch Script?
ответ
Вот простая реализация, что aschipfl предложил в своем комментарии:
@echo off
setlocal enableDelayedExpansion
set /a n=0
for /f "delims=" %%F in ('dir /b /od') do (
set /a n+=1
ren "%%F" "!n!_%%F"
)
Но есть две проблемы:
1) Команда FOR/F имеет оконечный символ по умолчанию ;
- если имя файла должно начинаться с ;
, тогда оно будет пропущено. Простое решение - установить EOL на символ, который не может отображаться в имени файла - :
- хороший выбор.
2) Переименование не будет выполнено, если имя файла содержит символ !
, потому что замедленное расширение включено, а %%F
расширен до задержки расширения. Решение состоит в том, чтобы сохранить имя файла в переменную, а затем переключение с задержкой на расширение и OFF внутри цикла
@echo off
setlocal disableDelayedExpansion
set /a n=0
for /f "eol=: delims=" %%F in ('dir /b /od') do (
set "file=%%F"
set /a n+=1
setlocal enableDelayedExpansion
ren "!file!" "!n!_!file!"
endlocal
)
Существует более простой вариант - использовать FINDSTR /N
префикс DIR /B /OD
выход с номером строки, а затем используйте FOR /F
для анализа номера и имени файла. Теперь нет необходимости в переменной счетчика или замедленном расширении.
@echo off
for /f "delims=: tokens=1*" %%A in ('dir /b /od ^| findstr /n "^"') do ren "%%B" "%%A_%%B"
Вам даже не нужен пакетный файл. Вы можете использовать следующее непосредственно из командной строки:
for /f "delims=: tokens=1*" %A in ('dir /b /od ^| findstr /n "^"') do ren "%B" "%A_%B"
С помощью 'dir/O' вы можете просмотреть файлы, отсортированные по дате (см.' Dir /? 'Для параметров); вы можете проанализировать его вывод с помощью цикла 'for/F', установить переменную счетчика и добавить его к именам файлов' ren' ... – aschipfl