[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
既然子程序没用setlocal做变量保护,你把子程序中的new改成string就行
QQ 33892006

TOP

本帖最后由 yhcfsr 于 2018-8-30 14:54 编辑

回复 9# 踏沙行



  • 19行new改为string,20行删掉.
  • 你这个不用SETLOCAL保护的根本不需要变量返回,只需要在子程序中对变量string赋值就行了.
  • 不过理论上,第20行将string的值重复赋值给string应该也没什么问题啊?
  • 你测试时最好用echo来跟踪变量,或许能找到原因.

给你写个参考例子.
  1. @echo off
  2. call :test1 "bat home" val1
  3. echo;%val1%
  4. call :test2 "123 4567" val2
  5. echo;%val2%
  6. pause&exit
  7. :test1
  8. set "str1=%~1"
  9. set "str1=%str1:~,-1%"
  10. set "val1=%str1%"
  11. goto:eof
  12. :test2
  13. setlocal
  14. set "str2=%~1"
  15. set "str2=%str2:~,-1%"
  16. endlocal&set "%2=%str2%"&goto:eof
复制代码
QQ 33892006

TOP

返回列表