| 
 
hulongzhuo 
中级用户
 
   
 
  
 
积分 294 
发帖 135 
注册 2007-3-9 
状态 离线
 | 
『楼 主』:
 相当菜的一个问题!
 
使用 LLM 解释/回答一下
  
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 
状态 离线
 | 
 | 
  2007-4-19 08:08 | 
  
 | 
 | 
 
hulongzhuo 
中级用户
 
   
 
  
 
积分 294 
发帖 135 
注册 2007-3-9 
状态 离线
 | 
 | 
  2007-4-19 08:14 | 
  
 | 
 | 
 
lianjiang2004 
金牌会员
 
      
 
  
  
积分 3946 
发帖 1884 
注册 2006-1-20 
状态 离线
 | 
 | 
  2007-4-19 08:17 | 
  
 | 
 | 
 
hulongzhuo 
中级用户
 
   
 
  
 
积分 294 
发帖 135 
注册 2007-3-9 
状态 离线
 | 
 | 
  2007-4-19 08:26 | 
  
 | 
 | 
 
hulongzhuo 
中级用户
 
   
 
  
 
积分 294 
发帖 135 
注册 2007-3-9 
状态 离线
 | 
 | 
  2007-4-19 08:31 | 
  
 | 
 | 
 
htysm 
高级用户
 
    
 
  
 
积分 866 
发帖 415 
注册 2005-12-4 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
@echo off 
set num=1 
echo %num% 
if %num% == 1 echo ok 
pause 
 
    
 
  
附件
1:   未命名.JPG (2007-4-19 08:35, 5.21 KiB,下载次数: 2)
  
 
 
 
  |  
                  
  
                    欢迎你到批处理爱好者联盟QQ群:18023953 |   
 | 
  2007-4-19 08:35 | 
  
 | 
 | 
 
hulongzhuo 
中级用户
 
   
 
  
 
积分 294 
发帖 135 
注册 2007-3-9 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
感谢楼上热心的兄弟!! 
还抓了图给我! 
真不知道该怎么谢了.. 
 
就是太菜,我语法太模糊了,我会尽快努力学习地. 
 
    
 
  
 |   
 | 
  2007-4-19 08:39 | 
  
 | 
 | 
 
zhoushijay 
高级用户
 
     Autowalk
  
 
积分 845 
发帖 375 
注册 2007-3-3 
状态 离线
 | 
 | 
  2007-4-19 08:42 | 
  
 | 
 | 
 
hulongzhuo 
中级用户
 
   
 
  
 
积分 294 
发帖 135 
注册 2007-3-9 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
是的,就是没得到环镜变量,是7楼的兄弟提醒了我, 
原来 "SET S=1"  中间是没有空格的,要不然死活也得不到值, 
这些东西真的难以注意到, 我倒是认为有空格跟没有空格有什么区别呢?? 
 
    
 
  
 |   
 | 
  2007-4-19 08:50 | 
  
 | 
 | 
 
wudixin96 
银牌会员
 
     
 
  
  
积分 1928 
发帖 931 
注册 2007-1-6 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
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 
状态 离线
 | 
 | 
  2007-4-19 09:18 | 
  
 | 
 | 
 
qieagle 
初级用户
 
  
 
  
  
积分 20 
发帖 8 
注册 2007-4-19 
状态 离线
 | 
 | 
  2007-4-19 11:54 | 
  
 | 
 | 
 
tongwandou 
初级用户
 
  
 
  
  
积分 112 
发帖 50 
注册 2007-4-15 
状态 离线
 | 
『第 14 楼』:
 
 
使用 LLM 解释/回答一下
  
我个人认为这个问题是由批处理程序中的可变参数引起的.楼主在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 楼』:
 
 
使用 LLM 解释/回答一下
  
另外还要注意的是在2.bat中的set s=%1,这句中的百分号后跟的是1,2,3,的1,而不是L.因为在BAT程序中只能有%0~%9这10个可变参数(当然要是用了SHIFT命令就另当别论了!).可变参数和变量是不同的概念!我也是现学现卖,望高手批评指正!! 
 
    
 
  
 |   
 | 
  2007-4-19 12:09 | 
  
 |