‘壹’ 如何在批处理脚本中获取前一天的日期
使用下面的代码就可以得到前一天的日期:
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
‘贰’ 批处理文件中,如何取得当前日期
首先打开cmd
date /t
看一下时间的格式
如果是2006-05-18这样的
可以这样写
@echo off
@for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do @set bb=%%a-%%b-%%c
@if exist aaa.dat (rename aaa.dat aaa_%bb%.dat) else (echo aaa.dat 不存在)
如果是18-05-2006这种格式,如果是英文版的都是这种格式
可以这样写
@echo off
@for /f "tokens=1,2,3 delims=- " %%a in ('date /t') do @set bb=%%c-%%b-%%a
@if exist aaa.dat (rename aaa.dat aaa_%bb%.dat) else (echo aaa.dat 不存在)
‘叁’ 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
这样就达到我们的目标,成功的得到日期和时间了。
‘肆’ 用批处理如何获取某个文件的修改日期
你是想读取based.mft这个文件吗?还是只要最后1个时间?如果只要最后修改的时间,不读文件也行的,直接读based.mft这个文件本身的修改时间即可,用%~t1即可,具体结构如下:
……其他代码……
Call:getLastTimebased.mft文件的路径
……其他代码……
goto:eof
:getLastTime
echo%~t1
goto:eof
如果你是想输出最后5行,就得读取based.mft文件了,代码结构如下:
setn=5:这里的5改成3就是最后3行
set/aLine=0
for"usebackq"%%iin("based.mft文件的路径")doset/aLine+=1
setLine-=%n%
more+%Line%"based.mft文件的路径"
‘伍’ DOS批处理有没有返回日期时间的函数或命令
我对XP的命令提示符有些了解,如果你是在XP下。那么这个应该好办。
MD C:\%DATE%
COPY X:\*.jpg "c:\%date%" (X是指你的可移动磁盘的盘符,记得引号必须在没开输入法打英文状态的引号)
我也顺便说明一下这个的意思
%date%是一个系统变量,他代表当前系统的日期,MD是创建文件的命令,第一句就是在C盘创建以当前日期为名称的文件夹
不知道你的照片是在可移动磁盘的哪个目录,一般数码照相相片格式是JPG。如果照片是在你的可移动磁盘的123文件夹里,你就把那个X:\*.JPG改成x:\123\*.jpg.
(再次说一下,X是指可移动磁盘的盘符)
‘陆’ 批处理中如何使用%time%获取当前时间并传递到下一个命令
楼上两位的答案在系统时间每小时的59分、8分、9分时将出现时间进位和数字进位制(8进制和10进制混淆)产生的计算错误,就楼上的代码给你改正一下。
@echo off
set hh=%time:~0,2%&set mm=%time:~3,2%&set ss=%time:~6,5%
if "%time:~3,1%"=="0" set /a mm="%time:~4,1%"
if "%time:~0,1%"=="0" set /a mm="%time:~1,1%"
set/a mm+=1
if "%mm%"=="60" set mm=00&&set/a hh+=1
if "%hh%"=="24" set hh=00
echo 现在的时间是: %time%
echo 一分后的时间: %hh%:%mm%:%ss%
pause
请楼主测试并放心使用。
‘柒’ 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
‘捌’ 如何使用批处理命令,使本地计算机获取服务器时间
@echo off
::这个意思是获取192.168.1.100时间
net time \192.168.1.100
::这个意思是同步192.168.1.100时间
net time \192.168.1.100 /set
‘玖’ 用批处理 获取时间的命令
你的变量截取位置弄错了.
%date:~起始截取位置,依次往后截取字符的数量%
另外,set folder= 不需要加双引号
然后echo %folder% 测试一下,你就知道你截取的对不对了.
‘拾’ 批处理命令怎么获取FTP服务器上含日期命名的文件求指导
@echo off
echo open ip>a
set datenum=%date:~5,2%%date:~8,2%
echo user>>a
echo password>>a
echo bin>>a
echo get aaa%datenum%.txt>>a
echo bye>>a
ftp -s:a