#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