![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 15:50 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教:如何判断输入的变量为空的。 |
| 可打印版本 4,444 / 19 |
| 第1楼 lianjiang2004 | 发表于 2006-12-11 03:02 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
请教:如何判断输入的变量为空的。 请教:如何判断输入的变量为空的。
目的: 根据set.ini里的内容如 E:\aaa1\bbb2.gho,即包括盘符,目录,文件名,其中目录可无。 通过分离set.ini里的字符,分别获得盘符,目录,文件名的变量。 假如无盘符或无文件名,需重新设定,否则继续。 下面是我的代码,请教哪里出错了?谢谢。 ------------------ :sub_18d Rem 读取设置文件Set.ini For /f "tokens=*" %%i In (c:\_set.ini) Do ( Set drive=%%~di Set directory=%%~pi Set filename=%%~nxi ) If %drive%=="" Goto sub_18h If %filename%=="" Goto sub_18h Goto sub_18e :sub_18h cls Echo. Echo 自定义路径格式不正确,需重新设置[正确格式如 E:\aaa1\bbb2.gho]。 Echo. pause Goto Set :sub_18e |
|
| 第2楼 a9319751 | 发表于 2006-12-11 03:16 |
| 中级用户 发帖 170 积分 439 | |
|
If "#%drive%"=="#" Goto sub_18h
If "#%filename%"=="#" Goto sub_18h Rem 读取设置文件Set.ini For /f "tokens=*" %%i In (c:\_set.ini) Do ( set.ini? _set.ini? |
|
| 第3楼 ccwan | 发表于 2006-12-11 03:20 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
是挺乱的^_^,顺便说一下,获得的路径是\aaa1\.
|
|
| 第4楼 ccwan | 发表于 2006-12-11 03:43 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
试一下下面的代码:
|
|
| 第5楼 lianjiang2004 | 发表于 2006-12-11 03:53 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by a9319751 at 2006-12-11 03:16: 不好意思,是_set.ini。 |
|
| 第6楼 lianjiang2004 | 发表于 2006-12-11 04:03 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by ccwan at 2006-12-11 03:43: |
|
| 第7楼 ccwan | 发表于 2006-12-11 05:36 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
当路径中没有盘符时,你的代码会取当前盘符。所以, %drive%永不为空。
|
|
| 第8楼 lianjiang2004 | 发表于 2006-12-11 06:01 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by ccwan at 2006-12-11 05:36: 问题是目录为空也不行了。比如e:\sys.gho,实际上就是保存到根目录。我要这也可以。 |
|
| 第9楼 a9319751 | 发表于 2006-12-11 06:10 |
| 中级用户 发帖 170 积分 439 | |
|
:sub_18d
Rem 读取设置文件Set.ini For /f "tokens=*" %%i In (c:\_set.ini) Do ( Set drive=%%~di Set directory=%%~pi Set filename=%%~nxi ) If "%drive%"=="" Goto sub_18h If "%filename%"=="" Goto sub_18h Goto sub_18e :sub_18h cls Echo. Echo 自定义路径格式不正确,需重新设置[正确格式如 E:\aaa1\bbb2.gho]。 Echo. pause Goto Set :sub_18e pause |
|
| 第10楼 ccwan | 发表于 2006-12-11 06:15 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
re a9319751:
""是一处,但你试一下就知道,没有*.gho时,directory=\ 还是不行。 [ Last edited by ccwan on 2006-12-11 at 06:17 AM ] |
|
| 第11楼 a9319751 | 发表于 2006-12-11 06:21 |
| 中级用户 发帖 170 积分 439 | |
|
re ccwan
我试了 e:\sys.gho e:\sys\sys.gho e:\ 都可以啊 [ Last edited by a9319751 on 2006-12-11 at 06:24 AM ] |
|
| 第12楼 lianjiang2004 | 发表于 2006-12-11 06:23 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
根据2楼的改了,好像可以。
----------- :sub_18d Rem 读取设置文件_Set.ini For /f "tokens=*" %%i In (c:\_set.ini) Do ( Set drive=%%~di Set directory=%%~pi Set filename=%%~nxi ) If "#%drive%"=="#" Goto sub_18h If "#%filename%"=="#" Goto sub_18h Goto sub_18e :sub_18h cls Echo. Echo 自定义路径格式不正确,需重新设置[正确格式如 E:\aaa1\bbb2.gho]。 Echo. pause Goto Set_0 :sub_18e |
|
| 第13楼 ccwan | 发表于 2006-12-11 06:29 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
那我可不明白了,我这里E:\aaa1\bbb2.gho没事,
E:\aaa1时出错 |
|
| 第14楼 a9319751 | 发表于 2006-12-11 06:35 |
| 中级用户 发帖 170 积分 439 | |
|
re ccwan
是的,刚才我没测试这个 这个是个错误 |
|
| 第15楼 a9319751 | 发表于 2006-12-11 06:41 |
| 中级用户 发帖 170 积分 439 | |
|
:sub_18d
Rem 读取设置文件Set.ini For /f "tokens=*" %%i In (a.txt) Do ( Set drive=%%~di Set directory=%%~pi Set filename=%%~nxi If "%%~nxi"=="%%~ni" Goto sub_18h ) If "%drive%"=="" Goto sub_18h If "%filename%"=="" Goto sub_18h Goto sub_18e :sub_18h Echo. Echo 自定义路径格式不正确,需重新设置[正确格式如 E:\aaa1\bbb2.gho]。 Echo. pause Goto Set :sub_18e Echo 自定义 pause 加了一句 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |