пакетная команда для захвата последнего файла по имени подстановочного знака

#windows #batch-file #cmd #script

#пакетный файл #cmd #пакетная обработка

Вопрос:

Я пытаюсь взять самый новый файл из каталога, который начинается с LEEXTR_DC30 , и скопировать его в другой каталог. Исходный файл датирован. Я также хотел бы избавиться от даты и просто сохранить ее в новом каталоге как LEEXTR_DC30.txt . Затем я хочу удалить скопированный файл в определенное время…. Любая помощь была бы вам очень признательна!! У меня есть начало ниже… Исходный файл называется примерно так (в зависимости от дня его создания). LEEXTR_DC30_201404180915a_1.txt

 copy "\taaproc0200aD$hbcdatadcbackupLEEXTR_DC30*.txt" "D:KronosInterfaceDesignerDA DC InterfaceAssociateDCXX Associate Files" exit /b 0  

Комментарии:

1. Нам нужно знать формат даты в имени файла, по крайней мере, чтобы знать, как разделить имя, чтобы удалить дату.

Ответ №1:

 rem get latest file: for /f "tokens=*" %%i in ('dir "\taaproc0200aD$hbcdatadcbackupLEEXTR_DC30*.txt" /s /od /b') do set a=%%i rem copy it: copy "%a% "D:KronosInterfaceDesignerDA DC InterfaceAssociateDCXX Associate FilesLEEXTR_DC30.txt"  

Что касается «удалить скопированный файл в определенное время» — вы можете это указать? После x дней? В следующий понедельник? Если появится новая версия?

Последнее было бы легко: не нужно удалять, просто перепишите его. ( copy -параметр /y )

Комментарии:

1. Просто на всякий случай — файл /ы может совпадать с непреднамеренным файлом. Возможно, лучше всего либо использовать pushd для изменения CWD в исходной папке, либо использовать переменную для исходной папки и добавить ее в имя файла, удалив /s