Mark_Titov Цитата: Если, надоел, можете послать, пойму...
Только напишите об этом, что бы я не надеялся...
не слышал мудрость, кажется античную, что учитель получает больше от ученика, нежели неофит от магистра
wolf0425 Цитата: в смысле - пихнуть в шапку уникальную строку со временем с точностью до миллисекунд? А радость то в чем, и чем %random%%random% реально хуже?
а по уникальному title можно через tasklist вычислить pid и прибить только нужную версию батника
Цитата: для случая нескольких одновременно запущенных копий батника.
, не тронув другие
Цитата: и вот скажите мне - а порядок год-месяц-день в выводе wmic - от региональных настроек зависит, или нет?
похоже что нет, так что с универсальным получением текущей даты - разобрались
вроде не зависит, но dir то зависит
первоисточник от
Maqentaer Цитата: предпочитаю дату брать через такое:
Код:for /f "skip=1" %%i in ('wmic os get LocalDateTime') do set datetime=%%i
set year=%datetime:~2,2%
set fullyear=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%
set hour=%datetime:~8,2%
set minute=%datetime:~10,2%
set second=%datetime:~12,2%
так как полностью не зависит от локали и региональных настроек системы.
-
http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=1320#9 Цитата: осталось найчиться дату файлов независимо от настроек определять
вот-вот
я тоже над этим голову ломал, пока остановился на варианте, переводить, скажем дату и время файла - например 2006 05 10 12:36 - в секунды и текущие дату и время - в секунды и сравнивать через if
что то вроде -
http://www.commandline.co.uk/lib/treeview/index.php Date and Time Functions DateToSecs [more= - я еще не разобрался с кодомами....]
The DateToSecs function converts a calendar date to the number of seconds elapsed since 1970-01-01 00:00:00.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
ateToSecs %yy% %mm% %dd% %hh% %nn% %ss% secs
::
:: By: Ritchie Lawrence, updated 2002-08-13. Version 1.1
::
:: Func: Returns number of seconds elapsed since 1st January 1970 00:00:00
:: for a given calendar date and time of day. For NT4/2000/XP/2003.
::
:: Args: %1 year to convert, 2 or 4 digit (by val)
:: %2 month to convert, 1/01 to 12, leading zero ok (by val)
:: %3 day of month to convert, 1/01 to 31, leading zero ok (by val)
:: %4 hours to convert, 1/01 to 12 for 12hr times (minutes must be
:: suffixed by 'a' or 'p', 0/00 to 23 for 24hr clock (by val)
:: %5 mins to convert, 00-59 only, suffixed by a/p if 12hr (by val)
:: %6 secs to convert, 0-59 or 00-59 (by val)
:: %7 var to receive number of elapsed seconds (by ref)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3&set hh=%4&set nn=%5&set ss=%6
if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
if 1%hh% LSS 20 set hh=0%hh%
if {%nn:~2,1%} EQU {p} if "%hh%" NEQ "12" set hh=1%hh%&set/a hh-=88
if {%nn:~2,1%} EQU {a} if "%hh%" EQU "12" set hh=00
if {%nn:~2,1%} GEQ {a} set nn=%nn:~0,2%
set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100
set /a j=j*86400+hh*3600+nn*60+ss
endlocal&set %7=%j%&goto :EOF
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Parameters
%1 year to convert, 2 or 4 digit (by val)
%2 month to convert, 1/01 to 12, leading zero ok (by val)
%3 day of month to convert, 1/01 to 31, leading zero ok (by val)
%4 hours to convert, 1/01 to 12 for 12hr times (minutes must be suffixed by 'a' or 'p', 0/00 to 23 for 24hr clock (by val)
%5 mins to convert, 00-59 only, suffixed by a/p if 12hr (by val)
%6 secs to convert, 0-59 or 00-59 (by val)
%7 var to receive number of elapsed seconds (by ref)
Return Values
See parameters above.
Example
@echo off & setlocal ENABLEEXTENSIONS
call :GetDate y m d
call :GetTime h n s t
call
ateToSecs %y% %m% %d% %h% %n% %s% secs
echo/%secs% seconds have elapsed since 1970-01-01 00:00:00
goto :EOF
Remarks
Use in conjunction with the SecsToDate function to perform date arithmetic with a resolution of one second. Note many Windows registry dates are stored as seconds elapsed since 1970-01-01 00:00:00 UTC.
Date range is from 1970-01-01 00:00:00 to 2038-01-19 03:14:07 which gives a range of 0 to 2147483647 or (2^31)-1 seconds.
See Also
SecsToDate
[/more]