标题: 相当菜的一个问题!
[打印本页]
作者: hulongzhuo
时间: 2007-4-19 08:03
标题: 相当菜的一个问题!
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 ]
作者: hulongzhuo
时间: 2007-4-19 08:08
HLPE ME !!
作者: hulongzhuo
时间: 2007-4-19 08:14
郁闷中.......
作者: lianjiang2004
时间: 2007-4-19 08:17
在里面加上几个pause,你就知道哪一步出错了。
作者: hulongzhuo
时间: 2007-4-19 08:26
刚才试了,我就是用 S = 1
然后ECHO "%S%" 也是空的,
奇怪了??
作者: hulongzhuo
时间: 2007-4-19 08:31
是不是没有定义啊?
DIM S
S = 1
"%S%"
这样行吗?
好像不需要定义的呀,
作者: htysm
时间: 2007-4-19 08:35
@echo off
set num=1
echo %num%
if %num% == 1 echo ok
pause
附件
1:
未命名.JPG (2007-4-19 08:35, 5.21 KiB,下载次数: 2)
作者: hulongzhuo
时间: 2007-4-19 08:39
感谢楼上热心的兄弟!!
还抓了图给我!
真不知道该怎么谢了..
就是太菜,我语法太模糊了,我会尽快努力学习地.
作者: zhoushijay
时间: 2007-4-19 08:42
a.bat中的环境变量没有传递到b.bat
作者: hulongzhuo
时间: 2007-4-19 08:50
是的,就是没得到环镜变量,是7楼的兄弟提醒了我,
原来 "SET S=1" 中间是没有空格的,要不然死活也得不到值,
这些东西真的难以注意到, 我倒是认为有空格跟没有空格有什么区别呢??
作者: wudixin96
时间: 2007-4-19 09:01
a.bat
@echo off
set ?=1
if "%?%" == "1" goto exit
:exit
b.bat
b.bat
set s=%?%
echo %s%
pause
变量赋值时别添加多余空格。
作者: flyinspace
时间: 2007-4-19 09:18
噢?怎么不用call b。bat
作者: qieagle
时间: 2007-4-19 11:54
我也想知道!
作者: tongwandou
时间: 2007-4-19 12:05
我个人认为这个问题是由批处理程序中的可变参数引起的.楼主在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下测试可以正确传递!
作者: tongwandou
时间: 2007-4-19 12:09
另外还要注意的是在2.bat中的set s=%1,这句中的百分号后跟的是1,2,3,的1,而不是L.因为在BAT程序中只能有%0~%9这10个可变参数(当然要是用了SHIFT命令就另当别论了!).可变参数和变量是不同的概念!我也是现学现卖,望高手批评指正!!