`
iihero
  • 浏览: 257672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

再谈DOS批处理下格式化日期字符串的方法(详解)

 
阅读更多
谈到日期字符串的输出,真是让人烦。
在Linux下,简单的一句话:date '+%Y%m%d-%H%M%S'就可以得到你要的输出:20120331-064219
可是在windows下,要想得到这个,还是需要费点功夫的。
1. 直接用字符串格式化输出
比如,如果你的机器上时间的输出是这样子的:
c:\>echo %date%-%time%
2012-03-31 星期六- 6:44:02.50
那么,要想得到输出20120331- 64402,可以这样截取字符串:
c:\>echo %date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%%time:~6,2%
20120331- 65406
表示取从0位置开始4个字符等等。这个方法不能截断空格。比较恼火

2.用for语句分断截取,似乎好点
先看看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]

optinos
eol=c           - 指一个行注释字符的结尾(就一个)//要忽略以什么字符开头的行
skip=n          - 指在文件开始时忽略的行数。
delims=xxx      - 指分隔符集。这个替换了空格和跳格键的//指定分割的字符列入delims=;:.使用了";",":","."做分隔
                  默认分隔符集。
tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代
                  的 for 本身。这会导致额外变量名称的分配。m-n
                  格式为一个范围。通过 nth 符号指定 mth。如果
                  符号字符串中的最后一个字符星号,
                  那么额外的变量将在最后一个符号解析之后
                  分配并接受行的保留文本。
usebackq        - 指定新语法已在下类情况中使用:
                  在作为命令执行一个后引号的字符串并且一个单
                  引号字符为文字字符串命令并允许在 filenameset
                  中使用双引号扩起文件名称。
参照这个用法,我们可以对日期字符串进行格式化输出:
因为日期结果是:2012-03-31 星期六
因为分隔字符是'-'还有空格' ',所以取3段出来,如:
c:\>for /f "tokens=1-3 delims=- " %1 in ("%date%") do @echo %1%2%3
20120331
再看时间:
c:\>echo %time%
6:59:20.38
c:\>for /f "tokens=1-3 delims=.: " %1 in ("%time%") do @echo %1%2%3
65939
两者一结合起来可以这样用:

引用
c:\>for /f "tokens=1-3 delims=- " %1 in ("%date%") do set ttt=%1%2%3
c:\>set ttt=20120331
c:\>for /f "tokens=1-3 delims=.: " %1 in ("%time%") do set ttt=%ttt%-%1%2%3
c:\>set ttt=20120331-70131

写成批处理,就变成这样(goodtime.bat):
for /f "tokens=1-3 delims=- " %%1 in ("%date%") do set ttt=%%1%%2%%3
for /f "tokens=1-3 delims=.: " %%1 in ("%time%") do set ttt=%ttt%-%%1%%2%%3

echo goodtime=%ttt%
这种方法比较灵活。

3.还有一种,是使用VBScript来定制输出
wscript.echo   year(date)   &   right( "0"   &   month(date),2)   &   right( "0"   &   day(date),2)   &   "-" & right( "0"   &   hour(time),2)   &   right( "0"   &   minute(time),2) 


结果如下,还是比较有意思的
c:\>cscript /nologo c:\shared\datescript.vbs
20120331-0711
当然这样还是不太理想,可以写个批处理,把结果弄到环境变量当中:
mydate2.bat,内容如下:
@echo off
cscript /nologo datescript.vbs >> tmp.txt
for /f "tokens=*" %%1 in (tmp.txt) do set goodtime=%%1
echo goodtime=%goodtime%

总结起来,第3种方法最复杂,目前还不能断定是否在所有windows平台都能正确运行,但是结果应该是固定的。不随着date,time格式变动而变动。但是1和2会依赖于日期时间的格式。仅此而已。
还是linux下比较固定。
0
0
分享到:
评论

相关推荐

    dos批处理命令详解

    ### DOS批处理命令详解 #### 一、Echo 命令 **功能**: Echo 命令用于在命令行窗口中显示消息。 **语法**: `echo [{on|off}] [message]` - `on` 或 `off`: 控制是否显示后续的命令提示符。 - `message`: 显示的消息...

    DOS批处理文件BAT教程

    - `IF [NOT] 字符串1 == 字符串2 命令 [命令参数]`:比较两个字符串是否相等。 - **PAUSE**:暂停批处理文件执行,等待用户按下任意键后继续。 - **REM**:用于添加注释,不被执行。可以使用`REM 注释内容`或`:: ...

    DOS批处理高级教程精选合编

    DOS批处理是一种早期的自动执行命令方式,它将一系列命令写入一个批处理文件中,通过命令提示符(CMD)来执行。在Windows系统中,这些批处理文件通常具有.bat或.cmd的文件扩展名。批处理文件可以让用户通过单个命令...

    DOS批处理高级教程精选合编.pdf

    根据提供的文件信息,这里是对“DOS批处理高级教程精选合编.pdf”文件中提到的知识点的详细解读。 ### 一、批处理基础 #### 1. 批处理定义与基本操作 批处理文件是一种特定格式的文本文件,扩展名为BAT或CMD,包含...

    dos批处理命令详解.doc

    2. **判断字符串是否相等**:使用`if "字符串 1"=="字符串 2"`,例如`if "abc"=="xyz" (echo 字符串 abc 等于字符串 xyz) else (echo 字符串 abc 不等于字符串 xyz)`。需要注意的是,这里比较时区分大小写。若不区分...

    DOS批处理高级教程合编(含目录标签,方便查阅)

    DOS批处理是基于Windows操作系统的一种自动化命令脚本,它的主要功能是通过执行一系列命令来自动完成重复性的任务,提高工作效率。批处理文件通常以.bat或.cmd为扩展名。虽然Windows系统已经从命令行发展到了图形...

    DOS命令详解+批处理

    DOS命令是用户与系统交互的主要方式,而批处理则是一种自动化执行一系列命令的方法,极大地提高了工作效率。以下是DOS命令详解和批处理的相关知识点: 一、DOS基础命令 1. `DIR`:列出目录中的文件和子目录,可以...

    DOS批处理文件BAT教程.pdf

    ### DOS批处理文件BAT教程知识点总结 #### 一、基础命令使用详解 ##### 1. `echo` 和 `echo off` - **`echo`**: 显示此命令之后的所有字符。例如,`echo Hello World` 将会在屏幕上显示“Hello World”。 - **`...

    dos下取不同日期格式

    ### DOS 下获取不同日期格式的方法 在DOS(磁盘操作系统)环境中,处理日期和时间是一种常见的需求,尤其是在脚本编写或批处理任务中。本文将详细介绍如何在DOS环境下通过命令行操作来获取不同格式的日期。 #### ...

    DOS批处理高级教程精选合编.格式化版

    ### DOS批处理高级教程精选知识点 #### 第一章 批处理基础 ##### 第一节 常用批处理内部命令简介 **1. REM 和 ::** - `REM` 和 `::` 都用于添加注释。 - `REM` 之后的文字被视为注释,直到行末。 - `::` 之后的...

    DOS批处理常用命令及用法大全

    ### DOS批处理常用命令及用法详解 #### 1. Echo 和 @ 回显控制命令 **命令介绍:** - `echo [文本]`:显示指定的文本字符串。 - `echo off`:关闭命令提示符窗口中的命令回显。 - `echo on`:开启命令提示符窗口中...

    DOS批处理高级教程资料精选

    ### DOS批处理高级教程资料精选 #### 一、批处理基础概述 本教程旨在深入讲解DOS批处理的高级应用,适用...通过以上内容的学习,可以全面掌握DOS批处理的高级应用技巧,进一步提升在Windows环境下的自动化处理能力。

Global site tag (gtag.js) - Google Analytics