[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理怎样按指定格式显示日期时间?

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

怎样用批处理显示时间 2008 年07 月30 日 18 点14 分19 秒

  演示代码如下:
  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
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

能不能解释一下。看不太懂,刚学。

TOP

原帖由 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 括起来。这样,该字符
    串会被当作一个文件中的一个单一输入行。

TOP

多谢两位的认真回复,学习了!

TOP

namejm站长的代码果真行吗?
不同的操作系统,日期格式会有不同。
心绪平和,眼藏静谧。

TOP

  只能适应默认的区域日期设置,还有其他的日期格式难以适应,只能照着设置更改代码了——要想做一个通用的比较困难。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

转帖

不简单,但确实有人写出来了。以下转帖,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%
复制代码
心绪平和,眼藏静谧。

TOP

要做到通用,确实不太容易^_^

TOP

路过看看情况,哎

TOP

返回列表