Board logo

标题: [系统相关] 批处理怎样按指定格式显示日期时间? [打印本页]

作者: q1a2z3q1a2z3    时间: 2008-7-30 18:20     标题: 批处理怎样按指定格式显示日期时间?

本帖最后由 pcl_test 于 2016-9-19 19:40 编辑

怎样用批处理显示时间 2008 年07 月30 日 18 点14 分19 秒
作者: namejm    时间: 2008-7-30 19:22

  演示代码如下:
  1. @echo off
  2. for /f "tokens=1-3 delims=- " %%i in ("%date%") do set /p=%%i年%%j月%%k日 <nul
  3. for /f "tokens=1-3 delims=:." %%i in ("%time%") do echo %%i点%%j分%%k秒
  4. pause
复制代码

作者: xiaoxiao693    时间: 2008-7-30 20:31

能不能解释一下。看不太懂,刚学。
作者: more    时间: 2008-7-30 20:37

原帖由 xiaoxiao693 于 2008-7-30 20:31 发表
能不能解释一下。看不太懂,刚学。

for /?

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
    会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将
    每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或
    空格定界符号。请注意,这个 for 程序体的语句引用 %i 来
    取得第二个符号,引用 %j 来取得第三个符号,引用 %k
    来取得第三个符号后的所有剩余符号。对于带有空格的文件
    名,您需要用双引号将文件名括起来。为了用这种方式来使
    用双引号,您还需要使用 usebackq 选项,否则,双引号会
    被理解成是用作定义某个要分析的字符串的。
    %i 专门在 for 语句中得到说明,%j 和 %k 是通过
    tokens= 选项专门得到说明的。您可以通过 tokens= 一行
    指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或
    'Z' 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;而且,
    同时不能有 52 个以上都在使用中。
    您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,
    用单引号将括号之间的 filenameset 括起来。这样,该字符
    串会被当作一个文件中的一个单一输入行。
作者: q1a2z3q1a2z3    时间: 2008-7-30 21:12

多谢两位的认真回复,学习了!
作者: pusofalse    时间: 2008-7-30 21:17

namejm站长的代码果真行吗?
不同的操作系统,日期格式会有不同。
作者: namejm    时间: 2008-7-30 22:03

  只能适应默认的区域日期设置,还有其他的日期格式难以适应,只能照着设置更改代码了——要想做一个通用的比较困难。
作者: pusofalse    时间: 2008-7-30 22:23     标题: 转帖

不简单,但确实有人写出来了。以下转帖,CN-DOS HAT编辑:
  1. @echo off
  2. rem 需要reg.exe的支持
  3. rem 无法保证在中、英之外的其它语言的操作系统上得到正确结果
  4. for /f "skip=4 delims= " %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do set DateFormat=%%a
  5. set DateFormat=%DateFormat:~-8%
  6. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
  7. set Today=%date: =%
  8. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %DateFormat% /f>nul
  9. set "Week=Mon Tue Wed Thu Fri Sat Sun 星期一 星期二 星期三 星期四 星期五 星期六 星期日"
  10. for %%a in (%Week%) do call set "Today=%%Today:%%a=%%"
  11. echo %Today%
复制代码

  1. @echo off
  2. rem 需要reg.exe的支持
  3. for /f "skip=4 delims= " %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do set DateFormat=%%a
  4. set DateFormat=%DateFormat:~-8%
  5. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
  6. set Today=%date: =%
  7. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %DateFormat% /f>nul
  8. if "%Today:~0,1%" gtr "9" (
  9.   set Today=%Today:~-10%
  10. ) else (
  11.   set Today=%Today:~0,10%
  12. )
  13. echo %Today%
复制代码

  1. @echo off
  2. rem 需要reg.exe的支持
  3. for /f "skip=4 delims= " %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do set DateFormat=%%a
  4. set DateFormat=%DateFormat:~-8%
  5. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d yyyy-M-d /f>nul
  6. type nul>"%temp%\MyFile.tmp"
  7. for /f %%a in ('dir "%temp%\MyFile.tmp" ^| findstr /i "MyFile.tmp"') do set Today=%%a
  8. reg add "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate /t REG_SZ /d %DateFormat% /f>nul
  9. echo %Today%
复制代码

  1. @echo off
  2. rem 需要WMIC的支持
  3. for /f "tokens=2 delims==" %%a in ('wmic path win32_operatingsystem get LocalDateTime /value') do set t=%%a
  4. set Today=%t:~0,4%-%t:~4,2%-%t:~6,2%
  5. echo %Today%
复制代码

  1. @echo off
  2. rem 需要调用VBS
  3. >"%temp%\MyDate.vbs" echo dt=date()
  4. >>"%temp%\MyDate.vbs" echo s=right(year(dt),4) ^& "-" ^& right("0" ^& month(dt),2) ^& "-" ^& right("0" ^& day(dt),2)
  5. >>"%temp%\MyDate.vbs" echo wscript.echo s
  6. for /f %%a in ('cscript /nologo "%temp%\MyDate.vbs"') do set Today=%%a
  7. echo %Today%
复制代码

作者: Batcher    时间: 2008-7-31 00:00

要做到通用,确实不太容易^_^
作者: hzcxdgioa    时间: 2013-11-30 08:03

路过看看情况,哎




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2