2009-09-14 1 views
0

Я пишу сценарий летучей мыши, и мне нужно сохранить дату из файла в переменную. Как я могу это сделать?Как получить дату из файла в файле bat?

Я буду использовать переменную для проверки того, что файл старше N дней, поэтому было бы неплохо сохранить дату в формате, который позволил бы мне выполнить такой тест.

+0

Примечание: Это очень вероятно не имеет ничего общего с DOS, за исключением того, что синтаксис языка интерпретатора командной строки проистекает из тех дней (и CP/M до этого). Вы бы не включили тег CP/M, верно? – Joey

ответ

2

Управление датами в пакетных файлах практически невозможно получить разумным способом. Единственное, что вы можете сделать, это поддержка вашей культуры и игнорирование остальных.

Однако, если у вас есть имя файла в параметре для партии (или подпрограммы), вы можете использовать %~t1. В противном случае следующее:

for %%x in (%file%) do set datetime=%%~tx 

На моей машине это выходит как «2009-08-28 16:13», который затем может быть разобранной на отдельные части:

:dissect_date_time 
for /f "tokens=1-5 delims=-: " %%a in (%1) do set year=%%a&set month=%%b&set day=%%c&set hour=%%d&set minute=%%e 
goto :eof 

это подпрограмма вы может звонить по телефону

call :dissect_date_time %datetime% 

, а затем у вас есть отдельные части в соответствующих переменных окружения. Адаптируйте соответственно в соответствии с вашим форматом даты и времени. Это сильно использует for в качестве токенизатора.

После того, как у вас есть отдельные детали, вы можете попробовать выяснить, сколько лет файл, просто делая тот же процесс с текущей датой/временем и вычитанием. Не будет весело, но работает.

1

Here - пакетный файл, который «Удаляет файлы старше N дней из одной папки».

Замените удаление на все, что вам нужно.

+0

Эта партия, и особенно часть диссекции даты, является злой :-) – Joey

1

Язык командного командного слова на самом деле не соответствует задаче. Microsoft предлагает PowerShell.

Командная строка Microsoft Windows PowerShell и язык сценариев помогают ИТ-специалистам достичь большего контроля и производительности. Используя новый административный скриптовый язык, более 130 стандартных инструментов командной строки и последовательный синтаксис и утилиты, Windows PowerShell позволяет ИТ-специалистам более легко управлять администрированием системы и ускорять автоматизацию. Windows PowerShell легко внедряет, учит и использует, поскольку он работает с существующей ИТ-инфраструктурой и существующими инвестициями в сценарии, а также потому, что он работает в Windows XP, Windows Vista и Windows Server 2003.

Для обсуждения аналогичной задачи с использованием PowerShell, см. powershell-script-to-delete-old-files.

+0

Или, в общем, делегировать задачу на язык сценариев. –

Смежные вопросы