= = 这个真的折腾死我了。。。。

参考:http://bbs.bathome.net/thread-3328-1-1.html

操作系统不同,日期格式也可能不同:

星期二 2008-07-29
2008-07-29 星期二
07/29/2008 Tue
Tue 07/29/2008 再考虑到中、英之外的其它语言的操作系统,日期格式的种类实在太多了。要想标准化地获取当前系统日期20080728,以下两个方法都不好:
1. 直接使用系统变量 %date% 进行字符串截取
2. 直接对 date 命令的结果进行字符串截取
实际上日期格式是由注册表 HKEY_CURRENT_USER\Control Panel\International 里面 sShortDate 的值来决定的。 推荐使用其它方法来获取系统日期: 【方案1】BAT + PowerShell
@echo off
REM Win7/Win8/Win10等系统自带PowerShell
for /f %%i in ('powershell -c "Get-Date -uformat '%%Y%%m%%d'"') do (
set "Today=%%i"
)
echo,%Today%
pause for /f "delims=" %%i in ('powershell -c "Get-Date -UFormat '%%Y-%%m-%%d %%H:%%M:%%S'"') do (
set "SysTS=%%i"
)
echo %SysTS%
pause
复制代码
【方案2】BAT + WMIC
@echo off
for /f "tokens=2 delims==" %%i in ('wmic path win32_operatingsystem get LocalDateTime /value ^| findstr "="') do (
set "strDate=%%i"
)
set "Today=%strDate:~0,4%%strDate:~4,2%%strDate:~6,2%"
echo,%Today%
pause set "Now=%strDate:~0,4%-%strDate:~4,2%-%strDate:~6,2% %strDate:~8,2%:%strDate:~10,2%:%strDate:~12,2%"
echo %Now%
pause
复制代码
【方案3】BAT + VBS
@echo off
>"%temp%\DateCalculate.vbs" echo dt=date()
>>"%temp%\DateCalculate.vbs" echo s=right(year(dt),4) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^& right("0" ^& day(dt),2)
>>"%temp%\DateCalculate.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "%temp%\DateCalculate.vbs"') do (
set Today=%%a
)
echo,%Today%
pause
复制代码
【方案4】BAT + REG
@echo off
REM 无法保证在中、英之外的其它语言的操作系统上得到正确结果
for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
set "RegDateOld=%%a"
)
set RegDateOld=%RegDateOld:~-8%
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
set Today=%date: =%
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %RegDateOld% /f>nul
set "Week=Mon Tue Wed Thu Fri Sat Sun 星期一 星期二 星期三 星期四 星期五 星期六 星期日"
for %%a in (%Week%) do (
call set "Today=%%Today:%%a=%%"
)
echo,%Today%
pause
复制代码
【方案5】BAT + REG
@echo off
for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
set "RegDateOld=%%a"
)
set RegDateOld=%RegDateOld:~-8%
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
set Today=%date: =%
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %RegDateOld% /f>nul
if "%Today:~0,1%" gtr "9" (
set Today=%Today:~-10%
) else (
set Today=%Today:~0,10%
)
echo,%Today%
pause
复制代码
【方案6】BAT + REG
@echo off
for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
set "RegDateOld=%%a"
)
set RegDateOld=%RegDateOld:~-8%
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
type nul>"%temp%\MyFile.tmp"
for /f %%a in ('dir "%temp%\MyFile.tmp" ^| findstr /i "MyFile.tmp"') do (
set Today=%%a
)
reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %RegDateOld% /f>nul
echo,%Today%
pause
复制代码
【方案7】BAT + REGEDIT
@echo off
REM 需要保证注册表编辑器没有处于锁定状态
regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
>"%temp%\new.reg" echo REGEDIT4
>>"%temp%\new.reg" echo,
>>"%temp%\new.reg" echo [HKEY_CURRENT_USER\Control Panel\International]
>>"%temp%\new.reg" echo "sShortDate"="yyyy-MM-dd"
regedit /s "%temp%\new.reg"
set Today=%date: =%
regedit /s "%temp%\bak.reg"
if "%Today:~0,1%" gtr "9" (
set Today=%Today:~-10%
) else (
set Today=%Today:~0,10%
)
echo,%Today%
pause
复制代码
【方案8】BAT + DEBUG
@echo off
for /f "tokens=6,8 delims== " %%a in ('^(echo a100^&echo mov ah^,2a^&echo int 21^&echo.^&echo p 2^&echo q^)^|debug^|find "CX"') do (
set /a y=0x%%a
set md=%%b
)
set /a m=0x%md:~,2%
set /a d=0x%md:~-2%
set m=0%m%
set d=0%d%
set Today=%y%-%m:~-2%-%d:~-2%
echo,%Today%
pause
复制代码
以下转载两个在DOS系统(不是Windows系统的CMD)里面获取日期、时间的代码:
原文:http://www.cn-dos.net/forum/viewthread.php?tid=19756
【willsort原始版】
@echo off
if "%1"=="[(" goto parse
echo.|date|find "Current" > _getdate.bat
echo set _dw=%%3> current.bat
echo set _date=%%4>> current.bat
call _getdate.bat echo.|date|find "Enter" > _getdfmt.bat
echo set _dfmt=%%3> enter.bat
call _getdfmt.bat echo.|time|find "Current" > _gettime.bat
echo set _time=%%3> current.bat
call _gettime.bat echo _|choice /c%_dfmt%%_date%_%_time%_ @%0 > _parse.bat
%comspec% /e:2048 /c _parse.bat
goto end :parse
set _dt1=_%2%3
set _dt2=_%5%6
set _dt3=_%8%9
for %%t in ([,Y,Y,-,M,M,-,D,D,]) do shift set _vdt=
:loop1
shift
set _tmp=%_vdt%
for %%t in (1,2,3,4,5,6,7,8,9,0) do if "%1"=="%%t" set _vdt=%_vdt%%1
if not "%_vdt%"=="%_tmp%" goto loop1
set %_dt1%=%_vdt% set _vdt=
:loop2
shift
set _tmp=%_vdt%
for %%t in (1,2,3,4,5,6,7,8,9,0) do if "%1"=="%%t" set _vdt=%_vdt%%1
if not "%_vdt%"=="%_tmp%" goto loop2
set %_dt2%=%_vdt% set _vdt=
:loop3
shift
set _tmp=%_vdt%
for %%t in (1,2,3,4,5,6,7,8,9,0) do if "%1"=="%%t" set _vdt=%_vdt%%1
if not "%_vdt%"=="%_tmp%" goto loop3
set %_dt3%=%_vdt% set _vdt=
:loop4
shift
set _tmp=%_vdt%
for %%t in (1,2,3,4,5,6,7,8,9,0) do if "%1"=="%%t" set _vdt=%_vdt%%1
if not "%_vdt%"=="%_tmp%" goto loop4
set _HH=%_vdt% set _vdt=
:loop5
shift
set _tmp=%_vdt%
for %%t in (1,2,3,4,5,6,7,8,9,0) do if "%1"=="%%t" set _vdt=%_vdt%%1
if not "%_vdt%"=="%_tmp%" goto loop5
set _MN=%_vdt% set _vdt=
:loop6
shift
set _tmp=%_vdt%
for %%t in (1,2,3,4,5,6,7,8,9,0) do if "%1"=="%%t" set _vdt=%_vdt%%1
if not "%_vdt%"=="%_tmp%" goto loop6
set _SS=%_vdt% set _vdt=
:loop7
shift
set _tmp=%_vdt%
for %%t in (1,2,3,4,5,6,7,8,9,0) do if "%1"=="%%t" set _vdt=%_vdt%%1
if not "%_vdt%"=="%_tmp%" goto loop7
set _CS=%_vdt% echo DTN:%_YY% %_MM% %_DD% %_HH% %_MN% %_SS% %_CS%
:end
复制代码
【willsort简化版】
@echo off
if "%1"==":" goto %2 (subroutine handler at %2) echo.exit|%comspec%/e:4096/k prompt set v=$d $t$_:>_tm.bat
call _tm.bat
echo.%v%&|%comspec%/e:4096/c %0 : Parse>_tm.bat
for %%p in (_tm.bat* _tmset.bat*) do call %%p echo.Note that d1 d2 and d3 are in your system date order
echo.DTN:d1=%d1% d2=%d2% d3=%d3% hh=%hh% mm=%mm% ss=%ss% cs=%cs%. for %%e in (v d1 d2 d3 hh mm ss cs) do set %%e=
for %%f in (_tm.bat* _tm.tmp* _tmset.bat*) do del %%f
goto end :Parse (usage: call %0 : Parse +input redirect date/time)
set me=%0
set tok=d1 d2 d3 hh mm ss cs
set d1=
:NextToken
for %%v in (v1 v) do set %%v=
choice /c&0123456789 /n>_tm.tmp
for %%n in (0 1 2 3 4 5 6 7 8 9) do if errorlevel 77%%n set v=%%n
if not errorlevel 2 %me% : SetToken %tok%
find ""<_tm.tmp>nul
if not errorlevel 1 if not "%d1%"=="" call %me% : SetToken %tok%
set d1=%d1%%v%
goto NextToken :SetToken
set tok=%4 %5 %6 %7 %8 %9
echo set %3=%d1%>> _tmset.bat
set d1=
goto end :end (end-of-file)
复制代码

  

Dos命令获取当前时间的更多相关文章

  1. dos命令获取系统时间与变量定义

    1.获取系统时间及格式化 参考文章: 1.1 cmd下获取系统时间 1.2 获取系统时间的DOS命令 2.变量定义 https://www.jb51.net/article/49197.htm 3.使 ...

  2. 用DOS命令获取文件列表

    其实就是两个命令:dir 跟 tree 在C:盘根目录下生成了一个名为“filelist.txt”的文本文件,该文件中即包含D:盘的文件夹列表. dir d:\ >c:\filelist.txt ...

  3. ASP.NET调用dos命令获取交换机流量

    protected void btn_Cisco_Click(object sender, EventArgs e) { try { string ip = txt_ip.Value; string ...

  4. Windows 下通过DOS命令获取指定文件夹下所有文件的全路径

    1.在你要获取路径的文件夹下 新建文本文档 (.txt) 文件, 2.输入以下内容保存 DIR *.* /S/B >LIST.TXT /s 表示递归 3. 将文件后缀改成 .bat 4.双击运行 ...

  5. [置顶] 获取系统时间的方法--linux

    一. localtime 函数获取(年/月/日/时/分/秒)数值. 1.感性认识 #include<time.h>     //C语言的头文件 #include<stdio.h> ...

  6. ”ftp使用dos命令“

    ftp不能使用dos命令,ftp有专用的命令. 在批处理文件中,如果用到dos命令获取信息(比如:系统日期),将用获取的信息,输出到ftp脚本文件中,然后执行ftp脚本文件. set yyyy=%DA ...

  7. 获取系统时间的DOS命令

    DOS C:\Users\yaozhendong>echo %date:~0,10% %time%2011/12/24 19:45:41.25 前段时间工作中需要对一个地址做定时PING操作,并 ...

  8. 如何使用dos命令打开当前用户、当前日期、当前时间以及当前用户加当前时间?

    1.dos命令安装mysqld --stall.启动net start mysql.进入MySQL数据库mysql -uroot -p后,输入select user();当前用户 select cur ...

  9. 在.net中悄悄执行dos命令,并获取执行的结果(转)

    一.怎样使dos命令悄悄执行,而不弹出控制台窗口? 1.需要执行带“/C”参数的“cmd.exe”命令,它表示执行完命令后立即退出控制台.2.设置startInfo.UseShellExecute = ...

随机推荐

  1. Linux 缺少 mime.types 文件 mailcap

    问题描述: 一个项目当中使用的是 ossfs 挂载的一个 oss,在系统上传附件时,比如图片或视频时, 它的头信息为,application/octet-stream,上传后直接为二进制文件,访问的话 ...

  2. visual studio 2017搭建linux c++开发环境

    https://blog.csdn.net/cekonghyj/article/details/77917433 https://blog.csdn.net/norsd/article/details ...

  3. 虚拟机中windows下制作超级隐藏账户

    这篇博客非原创,我只是将很多大佬写的东西理解了一下写了出来. 接下来的实验最好在虚拟机进行,因为可以快照~ 制作隐藏用户可以说是两种方法但是基本操作一样,所以我们穿插着进行一种是隐藏账户,一种是影子账 ...

  4. crontab每小时运行一次

    先给出crontab的语法格式 对于网上很多给出的每小时定时任务写法,可以说绝大多数都是错误的!比如对于下面的这种写法: 00 * * * * #每隔一小时执行一次 00 */1 * * * #与上面 ...

  5. Linux下查看压缩文件内容的 10 种方法

    Linux下查看压缩文件内容的 10 种方法 通常来说,我们查看归档或压缩文件的内容,需要先进行解压缩,然后再查看,比较麻烦.今天给大家介绍 10 不同方法,能够让你轻松地在未解压缩的情况下查看归档或 ...

  6. 获取spring上下文 - applicationContext

    前言 spring上下文是spring容器抽象的一种实现.将你需spring帮你管理的对象放入容器的一种对象,ApplicationContext是一维护Bean定义以及对象之间协作关第的高级接口. ...

  7. xsy 2414【CF587C】Duff in the Army

    Description [题目描述]: 最近有一场战争发生,Duff是战争里一名士兵,Malek是她的长官. 他们的国家——Andarz Gu有n个城市(编号为1到n),总共有n-1条道路,每条道路连 ...

  8. C++ 中 static 与 const 的用法及对比

    在这个学习过程中我对 static 及 const 的使用时常会混淆,因此整理,加深记忆 一.类的静态成员 如果某个属性为整个类所共有,不属于任何一个具体对象,则采用 static 关键字来声明静态成 ...

  9. 基于TCP的编程

    前提:本文基于Linux系统下的学习 服务器端 1 创建通讯端口,返回socket设备的文件描述符 sfdsocket(2)#include <sys/types.h> /* See NO ...

  10. jvm--工具

    jps (java process status) == ps / top 作用:显示所有运行中的java进程. jstat 作用:查看类装载,内存,垃圾收集,jit编译的信息. jinfo 作用:实 ...