![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-17 17:56 |
共 47,814 主题排行 / 349,907 发帖 / 今日 4 篇 / 48,259 会员排行 |
| DOS疑难解答 & 问题讨论 (解答室) » 在批处理中引用变量出现的问题,请大家出出主意! |
| 可打印版本 895 / 1 |
| 第1楼 remuzi | 发表于 2006-01-06 19:03 |
| 新手上路 发帖 1 积分 6 | |
|
在批处理中引用变量出现的问题,请大家出出主意! 我用每天的日期做文件名来备份数据库,但LOG文件不可用变量,不知是什么原因,代码如下,请高手指点:
@echo off date/t | exp test/test@emis owner=test file=f:\%1.dmp log=f:\%1.log if errorlevel = 0 (exit) else (start err.exe) 这样会出错误,但在改了.log文件名固定的后,如:log=f:\exp.log,就不会有问题,但我想每天生成一个数据库文件和LOG文件,这样我在恢复某天的数据时就可以查到当天的数据库是否有问题。而且errorlevel检查不到是否出错,都是直接退出的。 |
|
| 第2楼 willsort | 发表于 2006-01-07 10:00 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re remuzi:
你的代码由如下问题: 1、 f:\%1.dmp 与 f:\%1.log ,%1 意味着引用调用批处理的命令行的第一个参数,而它很可能为空,这样上面的引用就成了 f:\.dmp 和 f:\.log ,当然是很可能出错的。 而从实际代码来看,你试图利用 date/t 从管道中获取日期,这样是比较困难的,因为 DOS 或者 Windows 命令行不会将管道中的信息传送给 exp 的命令行,而会直接传送到的它的输入端。 在这里,如果要在文件名中使用日期一般通过环境变量来实现。在 NT 系列的 cmd 中,直接引用 %date% 变量便可得到日期,还可通过 %date:~0,10% 等形式对日期内容进行修剪。在DOS或9x的command中,需要先通过date或者prompt将日期值设置到环境变量中再行引用,细节在 批处理编程的异类(http://www.cn-dos.net/forum/viewthread.php?tid=8905) 可以找到,不再详述。 2、errorlevel检查不到是否出错,是你的用法有误。在DOS或者命令行中的命令语法,if errorlevel 对后面的数值判断是大于等于,而非等于,即使你在 errrorlevel 后使用了 = 或者 == 。对于此种情况,你可以使用 if %errorlevel% EQU 1 (exit) else (start err.exe) 。或者在 DOS/Win9x 下,可以使用: if not errorlevel 1 exit start err.exe |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |