2010-09-08 2 views
1

Может ли пакетный файл изменить системную дату; сохранять файл с атрибутами; изменить дату до текущей даты?Может ли пакетный файл изменять системную дату; сохранять файл с атрибутами; изменить дату до текущей даты?

Цель, чтобы сохранить Myfile.txt с датой 01.01.2010

используя команды Batch.

Я попытался установить дату = 01.01.2010

, а затем сохранить файл, но это не сработало.

Это невозможно?

@echo off 
rem to Run this Batch file as administrator 

date 01-01-2010 
echo %date% 
pause 
echo Hello World > test.txt 

date 09-08-2010 

echo %date% 
pause 

goto :eof 

Примечание: «Требуемая привилегия не удерживается клиентом» Если мы не «Запуск от имени администратора» Это создает сообщение об ошибке в

+0

Это исключительно плохая идея. Изменение даты и времени повлияет на каждый процесс. Это будет иметь странные последствия для запланированных задач. Странные вещи произойдут, и они будут очень трудно диагностировать, потому что все в системе делает предположение, что время прогрессирует монотонно. Поскольку реальная цель состоит в том, чтобы сгенерированный файл соответствовал вводу, вам нужна утилита вроде [touch] (http://gnuwin32.sourceforge.net/packages/coreutils.htm), чтобы просто обновить дату одиночного, сгенерированного файла , – RBerteig

ответ

3

Да, пакетный файл может это сделать, но я бы не рекомендовал его. Чтобы установить дату в Windows, вы используете команду DATE. Для того, чтобы установить дату 01.01.2010, вы должны выполнить эту команду в командной строке:

date 01-01-2010 

Тем не менее, необходимо обладать правами администратора для того, что для работы.

Чтобы изменить время, команда TIME.

Вы можете найти обе команды, используя объект HELP. т.е.

help date 
help time 

Это также можно получить текущую дату, используя пакетный файл, так что вы можете повторно установить дату после внесения изменения. Это несколько сложнее. Here's one way to do it.

Все, что сказал, я согласен с Джеком Келли: получите полезную утилиту touch.

+0

Спасибо ... Я уже пробовал установить дату = 01-01-2010, затем набрал:> Дата в другом окне CMD и дата не изменилась. Я могу выполнить весь код, но по какой-то причине я просто не могу установить переменную DATE в пакетном файле. Я действительно ценю всю обратную связь, спасибо Должен ли я удалить этот вопрос? – Edoctoor

+0

Нет переменной DATE. Вы не используете «установленную дату» для установки даты. Вы вводите команду «date 01-01-2010» в командной строке. –

+0

Вау, я не знал о tokenisation for-loop. 'cmd.exe' никогда не перестает удивлять. –

5

Ваш лучший выбор - вероятно, захватить touch от GNUWin32 и использовать его для изменения временных меток. Выполнение этого, изменяя системную дату, похоже на использование кувалды, чтобы взломать орех.

+0

У меня большой пакетный файл; однако файл, который он выводит, должен иметь исходную дату и время как тот, который он ввел. Это сказало; Я проверю GNUWin32 и надеюсь, что это поможет мне с другими проблемами. Спасибо за ваше время Jack Kelly – Edoctoor

+0

Это правильный ответ на проблему, поставленную @Edoctoor, хотя и не ответ на заданный вопрос. Я бы сказал, что это ответ на вопрос, который должен был быть задан. – RBerteig

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