Что нового

Изменить дату и время модификации файла

lorents

Новичок
Сообщения
82
Репутация
1
Есть допустим два файла с разной датой и временем модификации файла, необходимо сделать время модификации файлов одинаковыми.

Код:
"AutoIt3.exe" "script.au3" "файл 1" "файл 2"

Запускать буду через командную строку.
Подскажите, пожалуйста, как можно это реализовать?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
lorents,
То есть, надо взять время модификации файл_1 и присвоить его файл_2, так?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
lorents,
Попробуйте так.
Код:
#NoTrayIcon

If $CmdLine[0] < 2 Then Exit 1 ;запуск только с параметрами

If Not FileExists($CmdLine[1]) Then Exit 2;отсутствует первый файл
If Not FileExists($CmdLine[2]) Then Exit 3;отсутствует второй файл

$sTimeMod = FileGetTime($CmdLine[1], 0, 1)
If @error Then Exit 4;не смог определить время модификации у первого файла
If Not FileSetTime($CmdLine[2], $sTimeMod, 0, 0) Then Exit 5 ;не смог присвоить новое время модификации второму файлу
Exit 0;успех

lorents [?]
Запускать буду через командную строку.
Не помню, можно прочитать из командной строки ответ из консоли. Если да, то можно писать в консоль результат (или в файл.)
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
madmasles благодарю, протестировал.
AutoIt меня приятно удивил, сравнивал с приложением Touch, так вот скрипт AutoIt отстал от Touch всего в 3 раза, если сравнивать с vbs скорость AutoIt на голову выше.

Мне AutoIt нравится все больше и больше.

Чтобы было честно, я на всякий случай убрал первые три проверки в скрипте.
 
Автор
L

lorents

Новичок
Сообщения
82
Репутация
1
madmasles
зря я раньше не обращал внимание на AutoIt3, действительно функциональный проект, и скорость отличная.


Добавлено:
Сообщение автоматически объединено:


а можно изменить пример. Сейчас у нас так выглядит.

Код:
"AutoIt3.exe" "script.au3" "файл 1" "файл 2"

а можем ли сделать, если мы запускаем без файла "файл 1", то к "файл 2" применяем текущую дату и время модификации.

Т.е. делаем проверку, если указан один файл, то к нему применяем текущую дату и время модификации, если два файл, то действуем как сейчас.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
lorents,
Попробуйте так.
Код:
#NoTrayIcon

Global $sTimeMod

If Not $CmdLine[0] Then Exit 1
Switch $CmdLine[0]
	Case 1
		If Not FileExists($CmdLine[1]) Then Exit 2
		$sTimeMod = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC
		If Not FileSetTime($CmdLine[1], $sTimeMod, 0, 0) Then Exit 2
	Case 2
		If Not FileExists($CmdLine[1]) Then
			$sTimeMod = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC
		Else
			If Not FileExists($CmdLine[2]) Then Exit 2
			$sTimeMod = FileGetTime($CmdLine[1], 0, 1)
			If @error Then Exit 2
		EndIf
		If Not FileSetTime($CmdLine[2], $sTimeMod, 0, 0) Then Exit 2
EndSwitch
Exit
Запускать из ком.строки надо так:
Код:
"C:\Program Files\AutoIt3\AutoIt3.exe" /AutoIt3ExecuteScript "C:\script.au3" "Полный путь к файлу 1" "Полный путь к файлу 2"
;Или
"C:\Program Files\AutoIt3\AutoIt3.exe" /AutoIt3ExecuteScript "C:\script.au3" "Полный путь к файлу 1"
 
Верх