Я хочу переименовать все файлы в указанной папке, оканчивающиеся на .txt, в .csv старше 1 дня. У меня есть следующее, которое получит все файлы, заканчивающиеся на .txt, и переименует их в .csv.

For /R %1 %%G IN (*.txt) DO ren "%%G" "%%~nG.csv"

Часть, с которой я борюсь, - это только переименование файлов старше одного дня. Я ищу решение, которое будет работать, несмотря на формат даты, который может быть установлен в системе.

Спасибо

1 ответ1

1

Вы можете использовать forfiles , которая является родной командой начиная с Windows Vista.

Forfiles

Выбирает и выполняет команду для файла или набора файлов. Эта команда полезна для пакетной обработки.

параметры

/p <Path>
Указывает путь, с которого начинается поиск. По умолчанию поиск начинается в текущем рабочем каталоге.

/m <SearchMask>
Поиск файлов в соответствии с указанной маской поиска. Маска поиска по умолчанию *.*

/s
Дает команду forfiles рекурсивный поиск в подкаталогах.

/c "<Command>"

Запускает указанную команду для каждого файла. Командные строки должны быть заключены в кавычки. По умолчанию используется команда «cmd /c echo @file».

/d [{+|-}][{<Date>|<Days>}]

Выбирает файлы с последней измененной датой в течение указанного периода времени.

Источник: файлы

Пример использования

for /f "delims=" %%G in (
'forfiles /p %1 /m *.txt /s /c "cmd /c echo @path" /d -1'
) do ren "%%~G" "%%~nG.csv"

дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .