![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-18 11:23 |
共 47,814 主题排行 / 349,907 发帖 / 今日 0 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 如何在DOS批处理中创建一个TXT文件,并写入当前日期 |
| 可打印版本 3,744 / 9 |
| 第1楼 woshishiu | 发表于 2006-10-28 03:19 |
| 新手上路 发帖 1 积分 4 | |
|
如何在DOS批处理中创建一个TXT文件,并写入当前日期 请问如何在DOS批处理中创建一个TXT文件(如today.txt),并写入当前的日期为此文件的内容?另又如何可以在批处理中读取这个文件的内容,并把它赋予一个变量?谢谢
|
|
| 第2楼 tianzizhi | 发表于 2006-10-28 05:27 |
| 高级用户 发帖 214 积分 623 | |
|
可以直接把时间赋予变量,
如: set b=%date% 测试一下b的内容可用:echo %b% 会显示:2006-10-27 星期五 另外把当前日期创建并写入txt的命令:echo %date%>today.txt 读取用for : for /f "tokens=1 delims=\" %%i in (today.txt) do @set d=%%i |
|
| 第3楼 electronixtar | 发表于 2006-10-28 05:31 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
如果是纯DOS就不好弄
|
|
| 第4楼 cchessbd | 发表于 2006-10-28 08:33 |
| 高级用户 发帖 222 积分 525 | |
|
get 好像可以获得文件、当前日期。不过我在虚拟机用get测试时获取磁盘容量出错。
唉,最近头好大! 还有个 isdate可以拿当前时日期与文件日期比较。自己搜搜吧。 都是dos下的,windows好像不能用啊。 |
|
| 第5楼 lxmxn | 发表于 2006-10-28 08:55 |
| 版主 发帖 4,938 积分 11,386 | |
|
楼上所说的这几个功能,其实都可以用CMD-BAT来完成,只是代码相对来说比较长一点。解决问题最好不要使用第三方工具,如果解决问题一味的依赖第三方工具来完成的话,那么一些事情就根本没什么意义了。我们也不必这么努力学习批处理了。 |
|
| 第6楼 redtek | 发表于 2006-10-28 23:01 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
取得纯DOS当前日期并赋值给变量,有两种方法:
GetDATE.BAT 内容如下,使用版本: MS-DOS 6.22 第一种方法使用了外部命令(Find.exe 和 Command.com), 但Prompt足可以获得更好玩的内容:) 还有一种方法:(这个批处理文件名必须命名为: CURRENT.BAT) (因为我在写这个批处理里的时候为了减少一个临时文件,就让它自己调用自己--回调) 我们能得到的 MS-DOS 6.22 “先天”环境变量就这么多: 这种方法不用任何外部命令,但只适用于MS-DOS 6.22等纯DOS(由于日期或时间格式问题)。 CURRENT.BAT 内容如下: 原理: 当执行 DATE 内部命令要取得系统日期时,你必须要按回车键。 因为这个内部命令即是看系统日期又是更改系统日期的命令。 ECHO. 它代表输出一个空行(回车) 所以, 需要给 DATE 命令一个“额外”的“自动”的回车符,省得我们按。 ECHO.|DATE 这样就无需我们按回车键了,自动显示了当前的日期。 ECHO.|DATE>$REDTEK.BAT 我们它输出的日期重定向到一个文件中。 这个被重定向的文件被命令为一个批处理类型的文件,因为我们还要它执行。 这是系统日期的输出格式:(在我们重定向的那个批处理中就是这样的格式) 如果我们经常使用带有参数(%1....%9)这样的批处理, 如:(暂定文件名为 A.BAT) 那么当我们执行上面批处理并如下方式带参数执行时: 会如下显示: A B C D ,这个A B C D 就是我们输出的被带入的参数%1到%4 所以,我们已经把当含有当前日期的内容重定向到了一个批处理文件内: 你为什么不能把那行“Current date is Sun 10-29-2006”的内容中“Current”也当做是一个外部批处理文件呢? 象下面这样: 这样不行吗?当然可以!所以为什么要将那个输出日期重定向成一个可以执行的批处理文件内。 所以,我们要建一个Current.bat的批处理,让它来输出(显示)第4个参数, 当然就是我们想要取得的“10-29-2006”这个参数了。 新建一个Current.bat又要在主批处理程序之外再新建一个临时文件, 所以,干脆我们就用Current.bat来做主批处理文件,然后只生成一个装有被重定向的系统日期的批处理文件即可。 所以,在Current.bat中,我们让Echo.|date>重定向到一个文件中, 然后让那个文件执行,就相当于带了参数了, 那个文件一执行,会调用Current.bat(现在就是我们自己), 让它自己调用自己, 所以在开始部分我们判断一下如果参数非空(说明那个带日期内容的临时批处理文件执行并带参数进来了), 所以我们就流程转到:END段来执行赋值与显示的操作。 如果我们初次运行CURRENT.BAT这个批处理时,当然不会有参数被带进来, 所以系统按照将日期重定向到一个临时文件……的方法来按照我们的思路执行。 即然可以将一个日期或时间什么的内容赋值给一个变量, 那么是否再找它写入一个文件或用它做什么,还会是很难的事情吗? [ Last edited by redtek on 2006-10-28 at 11:10 PM ] |
|
| 第7楼 tianzizhi | 发表于 2006-10-29 02:50 |
| 高级用户 发帖 214 积分 623 | |
|
redtek真牛,我看得头大了,懂了一点.
@echo off echo exit|%comspec% /k prompt set mydate=$D$_|find "-">$redtek.bat call $redtek.bat for %%. in (%mydate%) do set mydate=%%. 不懂这几行,我试了一下,那个$redtek.bat里面什么也没有啊,那个日期怎么出来的,????头大了. @echo %dbg% off if not [%4]==[] goto :end echo.|date>$redtek.bat $redtek.bat 这个怎么解释呀,那个%dbg% 和%4怎么回事呀?????? |
|
| 第8楼 不得不爱 | 发表于 2006-10-29 03:24 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
这个网叶是怎么会是在IE打开里来是D D D D D D D的响,maxthon浏览器里打开就要关闭maxthon浏览器
|
|
| 第9楼 redtek | 发表于 2006-10-29 04:36 |
| 金牌会员 发帖 1,147 积分 2,902 | |
Originally posted by tianzizhi at 2006-10-29 02:50: 那个 @echo %dbg% off 是为了调试方便的:) 有时候不得不来回来去的改批处理想看看执行的过程到底错在哪里, 调试的时候就要(@echo on),…… 可是等调试完了还得改回去(如:@echo off),太麻烦。 所以, @echo %dbg% off 加到批处理的第一行, 这样,一般这个批处理执行时这个%dbg%变量是没有内容的,没被定义, 所以,相当于执行了 @echo off ~:) 但是,如果我想调试批处理看看运行过程的时候, 就在DOS命令行上输入: SET DBG=ON 那么,这个dbg就有参数定义了,当执行批处理时, 它会被自动带入参数变成了: @echo on off 但,它永远会执行@echo on的功能(即开启命令回显)。 当不想调试了, 就DOS命令行上输入: SET DBG= 这样就相当于清除了DBG这个变量 于是再运行批处理的时候%dbg%是空的,所以@echo off生效。 另:这个 @echo %dbg% off 不是我发明的, 是看到这个论坛 “面向对象的批处理语言” 的作者:Will Sort用过这句, 先开始也是不得其解,没事儿echo off中间加个%dbg%干什么呀? 看着象Debug缩写?没事儿打个 set dbg=on试试,结果成了。 可见Will Sort水平之高:) 个人感觉这个@echo %dbg% off用于反复调试非常方便:) |
|
| 第10楼 lxmxn | 发表于 2006-10-29 05:46 |
| 版主 发帖 4,938 积分 11,386 | |
|
redtek 真是厉害啊,学习了…… 我当初看 willsort 兄写的这个"@echo %dbg% off"也是不懂其意,现在看见了兄的回复,才知道其意了。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |