批处理以当前时间为文件名创建文件
批处理创建空文件
有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗?
假设我是 windows 操作系统,打开命令行。
输入以下命令试试:
echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%
输出类似:
2019_06_24_22_22_13
如果不想要秒,则输入:
echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%
输出类似:
2019_06_24_22_23
既然都到这一步了,那修改一下就可以达到目的了。
比如创建以日期命名的 .md 文件。
cd. >%date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%.md
这时候会发现当前目录下多了一个 2019_06_24_22_45.md
文件,而且是空文件。
上面的命令表示把命令cd.
的输出重新定向到 xxx.md 文件,cd.
表示改变当前目录为当前目录,即等于没改变,而且此命令不会有输出,所以就创建了没有内容的空文件。
其实创建空文件的方法还有很多:
1、copy nul a.txt
nul表示空设备,从概念上讲,它不可见,存在于每个目录中,可以把它看成一个特殊的“文件”,它没有内容;此例子表示将空设备复制到 a.txt,同样创建了没有内容的空文件。
2、type nul>a.txt
此例子表示显示空设备的内容,并写入到 a.txt。
3、echo a 2>a.txt
“2”表示错误输出的句柄,此例中没有错误输出,所以创建了没有内容的空文件。
其实“>”默认重定向到句柄1,即标准输出句柄。比如 cd.>a.txt
,其实就是cd. 1>a.txt
。
其实,句柄3到9也可以使用在本例中,它们是未经定义的句柄,也不会有输出,如
echo a 3>a.txt
咱们实操一下。
D:\>copy nul a.txt
已复制 1 个文件。
D:\>type nul>b.txt
D:\>echo a 2>c.txt
a
D:\>echo a 3>d.txt
a
根据上面的实验,type nul>b.txt
这个方法比较好,因为命令行没有输出,很清爽。
参考资料