![Board logo](images/default/logo.gif)
标题: [文本处理] 调用批处理文件是否会影响该文件里面的变量? [打印本页]
作者: girl2523 时间: 2010-9-2 10:21 标题: 调用批处理文件是否会影响该文件里面的变量?
首先给出大体思路,我实现一个bat有两种方式,第一种就是先把一些变量的设置放在prepare.bat中, 然后再另一个批处理文件1902.bat中调用prepare.bat; 第二种方法是直接把所有变量放在1902.bat中实现,我想问下这两种方式有什么区别, 理论来讲没有区别的,可为什么第一种方法和第二种方法的最后结果会不一样? 且第一种方法失败, 难道说在调用prepare.bat中变量发生了变化? 希望能有人帮忙解答!
这个是prepare.bat的内容:- @echo off
- echo.
- echo ************************************************************
- echo choose the right path
- echo ************************************************************
- echo.
- set path=\\172.25.140.232\mytest
复制代码
下面是第一种方法1902.bat的内容:- @echo off
- call prepare.bat
- rmdir %systemdrive%\905 /S /Q
- \\sources\deployment\installer\win\LzmaSDK\7z.exe x -o%systemdrive%\905 %path%\Main\tool.exe
- echo.
- echo **************************************************************
- echo delete a section of this file, doesn't matter what you delete just delete something
- echo **************************************************************
- echo.
- notepad %systemdrive%\905\tool.7z
- echo.
- echo **************************************************************
- echo.
- echo * Check Test Verify *
- echo.
- echo **************************************************************
- echo 1.Verify that setup fails
- echo 2.The message reads: 'Failed to extract installer package"
- echo 3.The More Information link goes to:
- echo http://resources/help.aspx?errorID=1513
- echo (you do not need to validate the text on this page)
- echo ************************************************************
- echo.
- echo.
- echo ************************************************************
- c:\905\install.exe
- echo ************************************************************
- echo.
- pause
复制代码
下面是第二种方法的1902.bat内容:- @echo off
- set path=\\172.25.140.232\mytest
- rmdir %systemdrive%\905 /S /Q
- \\sources\deployment\installer\win\LzmaSDK\7z.exe x -o%systemdrive%\905 %path%\Main\tool.exe
- echo.
- echo **************************************************************
- echo delete a section of this file, doesn't matter what you delete just delete something
- echo **************************************************************
- echo.
- notepad %systemdrive%\905\tool.7z
- echo.
- echo **************************************************************
- echo.
- echo * Check Test Verify *
- echo.
- echo **************************************************************
- echo 1.Verify that setup fails
- echo 2.The message reads: 'Failed to extract installer package"
- echo 3.The More Information link goes to:
- echo http://resources/help.aspx?errorID=1513
- echo (you do not need to validate the text on this page)
- echo ************************************************************
- echo.
- echo.
- echo ************************************************************
- c:\905\install.exe
- echo ************************************************************
- echo.
- pause
复制代码
做个解释- \\sources\deployment\installer\win\LzmaSDK\7z.exe x -o%systemdrive%\905 %slbranch%\Main\tool.exe
复制代码
是指把tool.exe解压到本地c:\905\下面.
最后结果: 第一种方法,安装得不到错误连接http://resources/help.aspx?errorID=1513 而是得到了http://resources/help.aspx?errorID=2, 第二种方法(即直接在1902.bat中设置变量%path%) 可以得到预期结果.
我想是不是因为在调用prepare.bat中变量%path%发生了变化? 希望能有强人帮忙解答!
作者: 随风 时间: 2010-9-2 11:48
按说不会
最好不要用 path 作变量名。
作者: TX_kakashi 时间: 2010-9-2 11:53
- ::存为1.cmd
- @echo off
- set aa=hello
复制代码
- @echo off
- call 1.cmd
- echo %aa%
- pause
复制代码
运行起来似乎没有问题呀,还有最好不要改path变量,可以换个名字。
作者: girl2523 时间: 2010-9-2 12:29 标题: 回复 2楼 的帖子
谢谢,我更改%path%为%slbranch%, 但依然出现这样的问题.
我也不知道为什么,理论上是可以通过,但实际上就是有问题.
作者: girl2523 时间: 2010-9-2 12:30 标题: 回复 3楼 的帖子
谢谢,我更改%path%为%slbranch%, 但依然出现这样的问题.
我也不知道为什么,理论上是可以通过,但实际上就是有问题. 莫非是tool.exe这个软件的问题吗? 这个问题困扰我好久了...
作者: TX_kakashi 时间: 2010-9-2 14:16
可以在1902.bat里开始的地方加一条测试用代码来检测变量已经生成了。- ::检测下%slbranch%是否有问题
- echo %slbranch%
- pause
复制代码
还有就是源代码里这里一条语句有点疑问:- [url=file://sources/deployment/installer/win/LzmaSDK/7z.exe]\\sources\deployment\installer\win\LzmaSDK\7z.exe[/url] x -o%systemdrive%\905 %path%\Main\tool.exe
复制代码
批处理里没有[url=xxx][/url]的标签的吧。
作者: girl2523 时间: 2010-9-2 15:32
没有这个[url=xxx][/url], 这个应该是我发贴子的时候弄上去的...
加了个检测语句在1902.bat里 echo %slbranch%
得到是正确的路径...
越来越纠结了...
作者: TX_kakashi 时间: 2010-9-2 16:55
那就比较麻烦了,单步调试看看先把,先检查下- [url=file://sources/deployment/installer/win/LzmaSDK/7z.exe]\\sources\deployment\installer\win\LzmaSDK\7z.exe[/url] x -o%systemdrive%\905 %path%\Main\tool.exe
复制代码
是不是这一行语句出的问题?
作者: Batcher 时间: 2010-9-2 17:38
把@echo off删掉,看看单步执行的过程。
作者: girl2523 时间: 2010-9-2 17:57 标题: 回复 9楼 的帖子
每一步都很正常,但最后结果就是错.了..明天进行一步一步调试!
作者: girl2523 时间: 2010-9-2 17:58 标题: 回复 8楼 的帖子
那段没有问题,成功地:
Everything is Ok
Files: 4
Size: 6698564
Compressed: 6311520
明天一步一步调试,谢谢关注
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |