中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 18:24
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何以当前日期时间为名建立日志文件 查看 1,258 回复 14
楼 主 如何以当前日期时间为名建立日志文件 发表于 2007-04-29 03:03 ·  中国 山西 大同 电信
新手上路
积分 12
发帖 5
注册 2007-04-29 02:21
19年会员
UID 86845
性别 男
状态 离线
工作需要每天四次检测网络连通情况,执行结果要保存。

计划将文件名表示为YYYYmmddHHssmm.txt

现用如下命令实现:
测试.bat > %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%.txt

但是当时间介于0点到9点时,%time:~0,2%时间函数取值会出现“ ”空格,不会像日期一样补0,即10点到23点之间,程序运行正常,其他时间则会由于文件名中包含空格出错。

请各位大虾帮帮忙,实现0点到9点之间文件名能在小时前补0

多谢多谢!!!
2 发表于 2007-04-29 03:29 ·  中国 上海 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
19年会员
UID 78578
性别 男
状态 离线
一个不理想的办法,是设置一下电脑的区域选项,把时间格式设置一下。
3 发表于 2007-04-29 04:20 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
@echo off
set time_=00%time%
set time_=%time:~-11%
set ok=%date:~0,4%%date:~5,2%%date:~8,2%%time_:~0,2%%time_:~3,2%.txt
echo md %ok%
pause
4 发表于 2007-04-29 21:20 ·  中国 山西 大同 电信
新手上路
积分 12
发帖 5
注册 2007-04-29 02:21
19年会员
UID 86845
性别 男
状态 离线
谢谢斑竹回复!!

可是用你的方法仍然会产生空格,是否有办法把0-9点前的空格替换成数字0?
5 发表于 2007-04-29 22:18 ·  中国 山西 大同 电信
新手上路
积分 12
发帖 5
注册 2007-04-29 02:21
19年会员
UID 86845
性别 男
状态 离线
自己解决了,原来的判断语句有问题

@echo 正在测试,请等待............
@echo off
if "%time:~0,1%"==" " goto pppp
ping 127.0.0.1 > %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%.txt
goto end
:pppp
ping 127.0.0.1 > %date:~0,4%%date:~5,2%%date:~8,2%_0%time:~1,1%%time:~3,2%.txt
goto end
:end
pause
6 发表于 2007-04-29 23:05 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
这个应该可以了:

@echo off
set time_=%time: =0%
set ok=%date:~0,4%%date:~5,2%%date:~8,2%%time_:~0,2%%time_:~3,2%
md %ok%
pause
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
w1972 +1 2007-04-30 00:13
7 发表于 2007-04-30 00:08 ·  中国 山西 大同 电信
新手上路
积分 12
发帖 5
注册 2007-04-29 02:21
19年会员
UID 86845
性别 男
状态 离线
修改系统时间模式的方法早试过了
8 发表于 2007-04-30 00:09 ·  中国 山西 大同 电信
新手上路
积分 12
发帖 5
注册 2007-04-29 02:21
19年会员
UID 86845
性别 男
状态 离线
还是斑竹高明

bat代码也够强大的了,居然可以 =0替换


谢谢!!!
9 发表于 2009-04-16 02:02 ·  中国 上海 浦东新区 电信
初级用户
积分 35
发帖 25
注册 2007-11-28 16:26
18年会员
UID 104069
性别 男
状态 离线
Originally posted by lxmxn at 2007-4-29 11:05 PM:
这个应该可以了:

@echo off
set time_=%time: =0%
set ok=%date:~0,4%%date:~5,2%%date:~8,2%%time_:~0,2%%time_:~3,2%
md %ok%
pause



版主 我单位的机器的操作系统都是英文版的,用你这个显示不了YYYYmmddHHssmm.txt

请问有通用版本的dos代码嘛?
10 发表于 2009-04-16 02:16 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
通用的系统日期时间处理会让你的代码变得很臃肿,
至少偶认为是这样,因为各种系统日期时间表示太多样了,要考虑的问题太多了。

等待斑主的好方法
精简
=> 个人网志
11 发表于 2009-04-16 02:22 ·  中国 上海 浦东新区 电信
初级用户
积分 35
发帖 25
注册 2007-11-28 16:26
18年会员
UID 104069
性别 男
状态 离线
我单位的机器的格式是
date /t: Thu 04/16/2009
time /t: 1:16p
这个的格式的,我也正烦呢。
换到现在的中文系统格式全乱了。。。。。
12 发表于 2009-04-16 03:10 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
批处理标准化获取当前系统日期
http://bbs.bathome.cn/thread-3328-1-1.html
13 发表于 2009-04-16 07:21 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
突然想到一个,不知道可行不?
我只有一个系统,哪个帮验证一下,谢谢
@echo off
call :sub time.tmp
echo %ti%
pause
goto :eof

:sub
echo.>%1
set ti=%~t1
del %1
精简
=> 个人网志
14 Re 13楼 发表于 2009-04-16 10:52 ·  新加坡 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
这个方法局限性太大了
因为日期中可能包含文件名认为非法的字符(这样的字符实在是太多了)
15 Re 13楼 发表于 2009-04-16 10:54 ·  新加坡 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
还有一点,~ti获取的日期格式跟%date%同样都是取决于注册表中那个键值的设置,仍然无法断定其格式。
论坛跳转: