[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 调用批处理文件是否会影响该文件里面的变量?

首先给出大体思路,我实现一个bat有两种方式,第一种就是先把一些变量的设置放在prepare.bat中, 然后再另一个批处理文件1902.bat中调用prepare.bat; 第二种方法是直接把所有变量放在1902.bat中实现,我想问下这两种方式有什么区别, 理论来讲没有区别的,可为什么第一种方法和第二种方法的最后结果会不一样? 且第一种方法失败, 难道说在调用prepare.bat中变量发生了变化? 希望能有人帮忙解答!
这个是prepare.bat的内容:
  1. @echo off
  2. echo.
  3. echo ************************************************************
  4. echo choose the right path
  5. echo ************************************************************
  6. echo.
  7. set path=\\172.25.140.232\mytest
复制代码
下面是第一种方法1902.bat的内容:
  1. @echo off
  2. call prepare.bat
  3. rmdir %systemdrive%\905 /S /Q
  4. \\sources\deployment\installer\win\LzmaSDK\7z.exe x -o%systemdrive%\905 %path%\Main\tool.exe
  5. echo.
  6. echo **************************************************************
  7. echo delete a section of this file, doesn't matter what you delete just delete something
  8. echo **************************************************************
  9. echo.
  10. notepad %systemdrive%\905\tool.7z
  11. echo.
  12. echo      **************************************************************
  13. echo.
  14. echo      *            Check           Test            Verify          *
  15. echo.
  16. echo      **************************************************************
  17. echo        1.Verify that setup fails
  18. echo        2.The message reads: 'Failed to extract installer package"
  19. echo        3.The More Information link goes to:
  20. echo         http://resources/help.aspx?errorID=1513
  21. echo               (you do not need to validate the text on this page)
  22. echo ************************************************************
  23. echo.
  24. echo.
  25. echo ************************************************************
  26. c:\905\install.exe
  27. echo ************************************************************
  28. echo.
  29. pause
复制代码
下面是第二种方法的1902.bat内容:
  1. @echo off
  2. set path=\\172.25.140.232\mytest
  3. rmdir %systemdrive%\905 /S /Q
  4. \\sources\deployment\installer\win\LzmaSDK\7z.exe x -o%systemdrive%\905 %path%\Main\tool.exe
  5. echo.
  6. echo **************************************************************
  7. echo delete a section of this file, doesn't matter what you delete just delete something
  8. echo **************************************************************
  9. echo.
  10. notepad %systemdrive%\905\tool.7z
  11. echo.
  12. echo      **************************************************************
  13. echo.
  14. echo      *            Check           Test            Verify          *
  15. echo.
  16. echo      **************************************************************
  17. echo        1.Verify that setup fails
  18. echo        2.The message reads: 'Failed to extract installer package"
  19. echo        3.The More Information link goes to:
  20. echo         http://resources/help.aspx?errorID=1513
  21. echo               (you do not need to validate the text on this page)
  22. echo ************************************************************
  23. echo.
  24. echo.
  25. echo ************************************************************
  26. c:\905\install.exe
  27. echo ************************************************************
  28. echo.
  29. pause
复制代码
做个解释
  1. \\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%发生了变化? 希望能有强人帮忙解答!

按说不会
最好不要用 path 作变量名。
技术问题请到论坛发帖求助!

TOP

  1. ::存为1.cmd
  2. @echo off
  3. set aa=hello
复制代码
  1. @echo off
  2. call 1.cmd
  3. echo %aa%
  4. pause
复制代码
运行起来似乎没有问题呀,还有最好不要改path变量,可以换个名字。

TOP

回复 2楼 的帖子

谢谢,我更改%path%为%slbranch%, 但依然出现这样的问题.
我也不知道为什么,理论上是可以通过,但实际上就是有问题.

TOP

回复 3楼 的帖子

谢谢,我更改%path%为%slbranch%, 但依然出现这样的问题.
我也不知道为什么,理论上是可以通过,但实际上就是有问题. 莫非是tool.exe这个软件的问题吗? 这个问题困扰我好久了...

TOP

可以在1902.bat里开始的地方加一条测试用代码来检测变量已经生成了。
  1. ::检测下%slbranch%是否有问题
  2. echo %slbranch%
  3. pause
复制代码
还有就是源代码里这里一条语句有点疑问:
  1. [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]的标签的吧。

TOP

没有这个[url=xxx][/url], 这个应该是我发贴子的时候弄上去的...
加了个检测语句在1902.bat里 echo %slbranch%
得到是正确的路径...
越来越纠结了...

TOP

那就比较麻烦了,单步调试看看先把,先检查下
  1. [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
复制代码
是不是这一行语句出的问题?

TOP

把@echo off删掉,看看单步执行的过程。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9楼 的帖子

每一步都很正常,但最后结果就是错.了..明天进行一步一步调试!

TOP

回复 8楼 的帖子

那段没有问题,成功地:
Everything is Ok

Files: 4
Size:       6698564
Compressed: 6311520
明天一步一步调试,谢谢关注

TOP

返回列表