Как получить дату из файла в файле bat? - PullRequest
0 голосов
/ 14 сентября 2009

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

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

Ответы [ 3 ]

2 голосов
/ 14 сентября 2009

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

Однако, если у вас есть имя файла в параметре пакета (или подпрограммы), вы можете использовать %~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 голос
/ 14 сентября 2009

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

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

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

1 голос
/ 14 сентября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...