首先是获取系统时间

原生的方法获取到的系统时间有中文(这个和操作系统的时间设置有关系),所以需要做一些截取。

原始的变量%Date%得到的字符串为:2008/09/12 星期五……这种是没法作为文件名用的。

网上搜到的第一种方法,截取前10位%date:~0,10%得到2008/09/12,貌似看起来可以。但是进行批处理命令的时候,作为文件名会创建文件失败,因为/不能作为文件名中的符号存在。

于是需要继续截取,在网上搜到两种方式经测试均可以实现正确的截取:

一:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
@echo off

rem echo 批处理获取当前系统日期时间

rem echo 获取当前日期字符串
for /f "tokens=1,2,3 delims=/- " %%a in ("%date%") do @set D=%%a%%b%%c
rem echo 获取当前时间字符串
for /f "tokens=1,2,3 delims=:." %%a in ("%time%") do @set T=%%a%%b%%c
rem echo 如当前小时小于10,将空格替换为0
set T=%T: =0%
rem echo 显示输出日期时间字符串
echo %D%%T%

pause

二:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
@echo off
set "year=%date:~0,4%"
set "month=%date:~5,2%"
set "day=%date:~8,2%"
set "hour_ten=%time:~0,1%"
set "hour_one=%time:~1,1%"
set "minute=%time:~3,2%"
set "second=%time:~6,2%"

REM 如果hh的十位数不为空,则生产的文件没问题;如果hh的十位数为空,批处理在处理名时遇到空格丢失了hhmmss。
if "%hour_ten%" == " " (
    set "filename=%year%%month%%day%0%hour_one%%minute%%second%"
) else (
    set "filename=%year%%month%%day%%hour_ten%%hour_one%%minute%%second%"
)

pause

再就是生成压缩包,目前我使用的时HaoZip进行的压缩,具体的命令行参数可以到官网的帮助中心去查看。

HaoZip的命令行程序不是HaoZip.EXE,而是HaoZipC.EXE,要注意哟。略奇葩的是HaoZip的目标在前面,源在后面,跟常规的命令是个反的。 使用如下命令,就可以生成压缩包了:

“D:\Program Files\2345Soft\HaoZip\HaoZipC.exe” a -tzip 压缩包名.zip 源文件名