中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 相当菜的一个问题! 上一主题 | 下一主题
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『楼 主』:  相当菜的一个问题!

a.bat
..
set ? = 1
if "%?%" == "1" goto exit
..
:exit
b.bat

b.bat
..
set s = %?% 或者是 set s = "%?%"
echo "%s%"

结果显示怎么是 "" 空的呢? 赋的变量值跑哪里去了?
是不是有语法错误?
我刚学,太菜了,别见笑~~

[ Last edited by hulongzhuo on 2007-4-18 at 07:12 PM ]

2007-4-19 08:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 2 楼』:  

HLPE ME !!

2007-4-19 08:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 3 楼』:  

郁闷中.......

2007-4-19 08:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 4 楼』:  

在里面加上几个pause,你就知道哪一步出错了。



Windows 一键还原
http://www.yjhy.com
2007-4-19 08:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 5 楼』:  

刚才试了,我就是用 S = 1
然后ECHO "%S%"  也是空的,
奇怪了??

2007-4-19 08:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 6 楼』:  

是不是没有定义啊?
DIM S
S = 1
"%S%"

这样行吗?
好像不需要定义的呀,

2007-4-19 08:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 7 楼』:  

@echo off
set num=1
echo %num%
if %num% == 1 echo ok
pause

附件 1: 未命名.JPG (2007-4-19 08:35, 5.21 K,下载次数: 2)




欢迎你到批处理爱好者联盟QQ群:18023953
2007-4-19 08:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 8 楼』:  

感谢楼上热心的兄弟!!
还抓了图给我!
真不知道该怎么谢了..

就是太菜,我语法太模糊了,我会尽快努力学习地.

2007-4-19 08:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 9 楼』:  

a.bat中的环境变量没有传递到b.bat

2007-4-19 08:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hulongzhuo
中级用户




积分 294
发帖 135
注册 2007-3-9
状态 离线
『第 10 楼』:  

是的,就是没得到环镜变量,是7楼的兄弟提醒了我,
原来 "SET S=1"  中间是没有空格的,要不然死活也得不到值,
这些东西真的难以注意到, 我倒是认为有空格跟没有空格有什么区别呢??

2007-4-19 08:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 11 楼』:  

a.bat
@echo off
set ?=1
if "%?%" == "1" goto exit
:exit
b.bat
b.bat
set s=%?%
echo %s%
pause
变量赋值时别添加多余空格。

2007-4-19 09:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 12 楼』:  

噢?怎么不用call b。bat



知,不觉多。不知,乃求知
2007-4-19 09:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qieagle
初级用户





积分 20
发帖 8
注册 2007-4-19
状态 离线
『第 13 楼』:  

我也想知道!

2007-4-19 11:54
查看资料  发送邮件  发短消息 网志  OICQ (309715707)  编辑帖子  回复  引用回复
tongwandou
初级用户





积分 112
发帖 50
注册 2007-4-15
状态 离线
『第 14 楼』:  

我个人认为这个问题是由批处理程序中的可变参数引起的.楼主在b.bat中的set s = %?%句调用a.bat文件传递的参数,但在a.bat中的:exit
b.bat中确没能把需要的参数给出,就错在这了!
应该改成这样:
set ?=1
if "%?%" == "1" goto exit
:exit
b.bat %?%

set s=%1
echo %1
pause
在XPsp2下测试可以正确传递!

2007-4-19 12:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tongwandou
初级用户





积分 112
发帖 50
注册 2007-4-15
状态 离线
『第 15 楼』:  

另外还要注意的是在2.bat中的set s=%1,这句中的百分号后跟的是1,2,3,的1,而不是L.因为在BAT程序中只能有%0~%9这10个可变参数(当然要是用了SHIFT命令就另当别论了!).可变参数和变量是不同的概念!我也是现学现卖,望高手批评指正!!

2007-4-19 12:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: