谈到日期字符串的输出,真是让人烦。
在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下比较固定。
分享到:
相关推荐
### DOS批处理命令详解 #### 一、Echo 命令 **功能**: Echo 命令用于在命令行窗口中显示消息。 **语法**: `echo [{on|off}] [message]` - `on` 或 `off`: 控制是否显示后续的命令提示符。 - `message`: 显示的消息...
- `IF [NOT] 字符串1 == 字符串2 命令 [命令参数]`:比较两个字符串是否相等。 - **PAUSE**:暂停批处理文件执行,等待用户按下任意键后继续。 - **REM**:用于添加注释,不被执行。可以使用`REM 注释内容`或`:: ...
DOS批处理是一种早期的自动执行命令方式,它将一系列命令写入一个批处理文件中,通过命令提示符(CMD)来执行。在Windows系统中,这些批处理文件通常具有.bat或.cmd的文件扩展名。批处理文件可以让用户通过单个命令...
根据提供的文件信息,这里是对“DOS批处理高级教程精选合编.pdf”文件中提到的知识点的详细解读。 ### 一、批处理基础 #### 1. 批处理定义与基本操作 批处理文件是一种特定格式的文本文件,扩展名为BAT或CMD,包含...
2. **判断字符串是否相等**:使用`if "字符串 1"=="字符串 2"`,例如`if "abc"=="xyz" (echo 字符串 abc 等于字符串 xyz) else (echo 字符串 abc 不等于字符串 xyz)`。需要注意的是,这里比较时区分大小写。若不区分...
DOS批处理是基于Windows操作系统的一种自动化命令脚本,它的主要功能是通过执行一系列命令来自动完成重复性的任务,提高工作效率。批处理文件通常以.bat或.cmd为扩展名。虽然Windows系统已经从命令行发展到了图形...
DOS命令是用户与系统交互的主要方式,而批处理则是一种自动化执行一系列命令的方法,极大地提高了工作效率。以下是DOS命令详解和批处理的相关知识点: 一、DOS基础命令 1. `DIR`:列出目录中的文件和子目录,可以...
### DOS批处理文件BAT教程知识点总结 #### 一、基础命令使用详解 ##### 1. `echo` 和 `echo off` - **`echo`**: 显示此命令之后的所有字符。例如,`echo Hello World` 将会在屏幕上显示“Hello World”。 - **`...
### DOS 下获取不同日期格式的方法 在DOS(磁盘操作系统)环境中,处理日期和时间是一种常见的需求,尤其是在脚本编写或批处理任务中。本文将详细介绍如何在DOS环境下通过命令行操作来获取不同格式的日期。 #### ...
### DOS批处理高级教程精选知识点 #### 第一章 批处理基础 ##### 第一节 常用批处理内部命令简介 **1. REM 和 ::** - `REM` 和 `::` 都用于添加注释。 - `REM` 之后的文字被视为注释,直到行末。 - `::` 之后的...
### DOS批处理常用命令及用法详解 #### 1. Echo 和 @ 回显控制命令 **命令介绍:** - `echo [文本]`:显示指定的文本字符串。 - `echo off`:关闭命令提示符窗口中的命令回显。 - `echo on`:开启命令提示符窗口中...
### DOS批处理高级教程资料精选 #### 一、批处理基础概述 本教程旨在深入讲解DOS批处理的高级应用,适用...通过以上内容的学习,可以全面掌握DOS批处理的高级应用技巧,进一步提升在Windows环境下的自动化处理能力。