BAT: оператор if на основе даты изменения файла

Я хочу увидеть, была ли дата изменения файла блокировки более 5 секунд назад или в будущем (указывая, что часы ПК были изменены обратно).

Как мне сказать

  • if file.modifydate < now - 5 seconds or modifydate > now
    • run command a (command a will launch my Java app)
  • else
    • run command b (command b will send a UDP packet to a localhost port)

person 700 Software    schedule 14.06.2011    source источник
comment
это должен быть пакетный файл, или vbscript тоже приемлем?   -  person wimh    schedule 14.06.2011
comment
Это интересная идея. Я думаю, что vbscript будет работать нормально. Можем ли мы запустить vbscript без отображения окон терминала?   -  person 700 Software    schedule 14.06.2011
comment
когда вы используете wscript.exe для запуска скрипта, вы ничего не видите, пока не выведете что-нибудь в скрипте.   -  person wimh    schedule 14.06.2011
comment
Трудно получить секундную часть файла с чистым пакетом, обычно вы получаете только что-то вроде 16.06.2011 07:44 с dir или FOR %a in (myfile) do echo %~ta   -  person jeb    schedule 16.06.2011
comment
Я буду использовать либо VBScript, либо JavaScript. @Wimmel, пожалуйста, ответь, чтобы я мог принять.   -  person 700 Software    schedule 16.06.2011
comment
@ Джордж, я думаю, будет лучше, если ты опишешь в ответе, как ты решил свою проблему, и примешь это как ответ.   -  person wimh    schedule 17.06.2011


Ответы (1)


Как предложил Виммел, я буду использовать VBScript — ну, на самом деле я буду использовать JScript так же, как обычно используется VBScript... потому что я уже знаком с JavaScript.

Я разместил этот вопрос: Windows XP и выше: JavaScript вместо VBScript?< /а>

У которого есть код, который я буду использовать

для проверки даты/времени изменения

var o = new ActiveXObject("Scripting.FileSystemObject");
var file = o.GetFile("c:\\temp\\test.js");
// WScript.Echo(file.DateLastModified); // This is the modify date/time with seconds

и код для выполнения моего Java-процесса

WshShell = WScript.CreateObject("WScript.Shell");
var result = WshShell.Run("command-goes-here", 0, true);
// WSH.Echo(result); // this is the exit code

команда b будет заключаться в отправке пакета UDP с использованием одного из предложений из Windows BAT или CMD: отправьте некоторые данные на локальный порт udp.

Команды, вероятно, были бы такими же, если бы я использовал VBScript/JScript, поэтому они должны работать нормально.

Единственное, чего не хватает: VBScript/JScript Networking: Connect UDP или TCP

Если бы я мог использовать нативную функцию, это определенно было бы лучше, чем exec команды b.

person 700 Software    schedule 17.06.2011