當前位置:首頁 » 編程軟體 » 批處理獲取時間腳本

批處理獲取時間腳本

發布時間: 2022-11-07 10:43:44

① 如何在批處理腳本中獲取前一天的日期

使用下面的代碼就可以得到前一天的日期:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
rem 計算指定天數之前的日期
set DaysAgo=1
rem 假設系統日期的格式為yyyy-mm-dd
call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays
set /a PassDays-=%DaysAgo%
call :DaysToDate %PassDays% DstYear DstMonth DstDay
set DstDate=%DstYear%-%DstMonth%-%DstDay%
echo %DaysAgo%天的日期是%DstDate%
pause
goto :eof

:DateToDays %yy% %mm% %dd% days
setlocal ENABLEEXTENSIONS
set yy=%1&set mm=%2&set dd=%3
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
endlocal&set %4=%j%&goto :EOF

:DaysToDate %days% yy mm dd
setlocal ENABLEEXTENSIONS
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF

② 用bat獲取當前時間並設置時間

1、很好實現,代碼如下

(echo%date:~,10%)>datefile.txt

生成的日期保存至datefile.txt

2、這個需要根據你的txt文檔內容來決定怎麼寫代碼,這里我按照txt文檔中只有一行時間內容來寫,代碼如下:

set/pt=<timefile.txt
time%t%

從timefile.txt中讀取時間,但要注意時間格式必須是H:M:S或HH:MM:SS或HH:MM或H:M

③ WIN7 獲取網路時間同步在電腦上,用批處理BAT命令怎麼做

以下代碼復制粘貼到記事本,另存為xx.bat,編碼選ANSI,以管理員身份運行
/*&cls&echo off
rem 獲取網路時間對本地電腦進行時間同步
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
for /f "tokens=1*" %%a in ('cscript -nologo -e:jscript "%~f0"') do (
echo;%%a %%b
date %%a
time %%b
)
echo;%#% +%$%%$%/%@% %z%
pause
exit
*/
function add(z){return Number(z)<10?'0'+z:z;}
var mx=['MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
var req=null,url=('moc+iqnait+emit##:ptth').replace(/#/g,'/');
for(var i=0;i<mx.length;i++){
try{
req=new ActiveXObject(mx[i]);
break;
}catch(e){}
}
if(req==null){WSH.StdErr.WriteLine("Can't build XMLHTTP object");WSH.Quit();}
try{
req.open('GET', url.split('').reverse().join('').replace(/\+/g,'.'), false);
req.send();
var m=req.ResponseText.match(/var timestamp = "(\d+)"/);
if(m){
var tt=parseInt(m[1].substring(0, 10));
var now=new Date(tt*1000);
var y=now.getFullYear(),m=now.getMonth()+1,d=now.getDate();
var hh=now.getHours(),mm=now.getMinutes(),ss=now.getSeconds();
WSH.echo(y+'-'+add(m)+'-'+add(d)+' '+add(hh)+':'+add(mm)+':'+add(ss));
}else{WSH.StdErr.WriteLine("Failed to get Internet Time");}
}catch(e){WSH.StdErr.WriteLine(e.message);}
WSH.Quit();

④ bat腳本中如何獲取明天日期

@echooff
echowscript.echodateadd("d",1,now())>a.vbs
for/f%%iin('cscript/nologoa.vbs')dosett=%%i
echo%t%
if"%t:~6,1%"=="-"sett=%t:~,5%0%t:~5%
echo%t%
if"%t:~9,1%"==""sett=%t:~,8%0%t:~-1%
echo%t%
pause

⑤ bat讀取時間、計算時間間隔腳本

@echooff
title同一月份下的耗時計算

::獲取起始月份、起始日期、起始小時和起始分鍾
setstartmonth=%date:~5,2%
setstartday=%date:~8,2%
setstarthour=%time:~0,2%
setstartmin=%time:~3,2%

echo.&echo修改系統日期和時間為未來同一個月份下的某日某月某時某分以便測試腳本
echo完成修改後按任意鍵繼續
pause>nul

::獲取終止月份、終止日期、終止小時和終止分鍾
setendmonth=%date:~5,2%
setendday=%date:~8,2%
setendhour=%time:~0,2%
setendmin=%time:~3,2%

::初始化間隔日期變數、間隔小時變數和間隔分鍾變數
setintday=0
setinthour=0
setintmin=0

::初始化耗時變數
setinttime=0

::如果結束月份和起始月份不在同一月則調用calc4標簽
if%endmonth%NEQ%startmonth%(call:calc4&goto:finalresult)

::如果結束日期等於起始日期則調用calc1標簽
if%endday%EQU%startday%(call:calc1&goto:finalresult)

::如果結束日期大於起始日期則調用calc2標簽
if%endday%GTR%startday%(call:calc2&goto:finalresult)

::如果結束日期小於起始日期則調用calc3標簽
if%endday%LSS%startday%(call:calc3&goto:finalresult)

::備註:沒有規避同一天內結束小時小於起始小時、以及同一小時內結束分鍾小於起始分鍾的情況,因為在腳本運行過程中,邏輯上一般不會出現這兩種情況。

::顯示耗時
:finalresult
echo耗時:%inttime%
exit/b

::同一天內的耗時計算需考慮到結束分鍾小於起始分鍾的時候從終止小時借位的情況
:calc1
if/i%endmin%LSS%startmin%(set/aintmin=endmin+60-startmin&set/aendhour-=1)else(set/aintmin=endmin-startmin)
set/ainthour=endhour-starthour
set/aintday=endday-startday
setinttime=%intday%天%inthour%小時%intmin%分鍾
goto:eof

::同一月份但不同天內的耗時計算需考慮到結束分鍾小於起始分鍾的時候從終止小時借位的情況需考慮到結束小時小於起始小時的時候從終止日期借位的情況
:calc2
if/i%endmin%LSS%startmin%(set/aintmin=endmin+60-startmin&set/aendhour-=1)else(set/aintmin=endmin-startmin)
if/i%endhour%LSS%starthour%(set/ainthour=endhour+24-starthour&set/aendday-=1)else(set/ainthour=endhour-starthour)
set/aintday=endday-startday
setinttime=%intday%天%inthour%小時%intmin%分鍾
goto:eof

::同一月份下結束日期邏輯上不能小於起始日期拋出錯誤
:calc3
setinttime=錯誤!結束日期小於起始日期!
goto:eof

::跨月份的情況忽略不計
:calc4
setinttime=跨月份忽略耗時計算
goto:eof

⑥ bat獲取當前日期

獲取日期
格式: %date%
結果: 2012-07-31
獲取時間
格式: %time%
結果: 10:21:21.68
這是獲取的系統標准格式的日期和時間,但是有時候我們需要使用規定的格式,怎麼辦呢?
格式: %date:~x,y%以及%time:~x,y%
說明: x是開始位置,y是取得字元數
比如說我要獲取完整的日期和時間,
格式: %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
結果: 20120731111039
但是如果時間早於10點,那麼只顯示日期不顯示時間,如:20120731,如何解決呢?
格式: %date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%
結果: 20120731052539
這樣就達到我們的目標,成功的得到日期和時間了。

⑦ 如何通過腳本或者批處理處理時間戳

@echooff
setfilename=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
echo%filename%
pause

獲取系統時間

@echooff
for/f"delims="%%ain("1.ini")doecho%%~nxa%%~ta>>3435.txt
pause

獲取文件名和最後修改時間

⑧ 批處理cmd腳本設置日期時,取月初前一天時間無法取到月末時間.

@echo off
echo Wscript.echo dateadd("d",-1,date)>vbs.vbs
set day=
for /f %%a in ('cscript //nologo vbs.vbs') do del vbs.vbs&&set day=%day% %%a
echo %day%
pause

⑨ 批處理bat獲取文件夾內的最新文件的修改時間,與當前系統時間進行對比

@echooff
set@=q&set/an=0x53b7e0b4
titleAnyquestion+%@%%@%%n%
cd/d"%~dp0"

set"logfolder=D:sk"
set"exefile=D: est.exe"
set"record=記錄.txt"

ifnotexist"%logfolder%"(echo;"%logfolder%"notfound&pause&exit)
ifnotexist"%exefile%"(echo;"%exefile%"notfound&pause&exit)
>"%tmp% .t"echo;WSH.echoDateDiff("n",CreateObject("Scripting.FileSystemObject").GetFile(WSH.Arguments(0)).DateLastModified,now)
cd.>"%record%"
for/f%%ain("%exefile%")doset"exename=%%~nxa"

:loop
cls
for/f"delims="%%ain('dir/a-d/b/tw/o-d"%logfolder%*.log"')do(setfname=%%a&gotobreak)
:break
ifnotdefinedfname(gotoend)
echo;"%fname%"
for/f%%ain('cscript-nologo-e:vbscript"%tmp% .t""%logfolder%\%fname%"')do(
echo;[%%a]
if%%ageq12(
taskkill/f/im"%exename%"/t
start"""%exefile%"
>>"%record%"echo;restartat%date%%time%
)
)
:end
echo;Anyquestion+%@%%@%%n%
ifexist"%windir%System32 imeout.exe"(timeout/t60/nobreak)else(>nulping/n600)
gotoloop

⑩ bat腳本循環獲取時間相同

換個變數名稱,不要改變系統變數的值
第一次把結果賦值給變數time,那麼第二次時,後面的截取就是從第一次的結果中截取,而不是從系統時間變數

熱點內容
outlook郵件的伺服器是什麼 發布:2025-07-15 09:45:59 瀏覽:482
如何安排資產配置 發布:2025-07-15 09:33:24 瀏覽:906
更新傳送伺服器目的地址失敗 發布:2025-07-15 09:27:05 瀏覽:484
c語言else的用法 發布:2025-07-15 09:19:54 瀏覽:119
tnt蘋果核安卓怎麼加好友 發布:2025-07-15 09:05:15 瀏覽:239
年輕人運行內存為什麼比安卓好 發布:2025-07-15 08:52:03 瀏覽:515
怎麼配置組策略 發布:2025-07-15 08:52:02 瀏覽:246
pythonjson格式 發布:2025-07-15 08:42:54 瀏覽:678
醫院葯房要什麼配置 發布:2025-07-15 08:29:55 瀏覽:666
編程說明書 發布:2025-07-15 08:16:39 瀏覽:761