[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
:
你的第一个代码:
问题出在这一句if "!var_!"=="" endlocal &goto :eof
当 if  条件成立时,endlocal 结束了所有本地变量,也就是说把你的%2和%3的值都清空了。

你的第二个代码:
   代码本身没有问题,但作为 函数调用,就有不足之处,
   因为在你的代码中把var和var_ 都被定了义,回到call处时,var和var_没有被清空,
   这样别人在调用你的函数之前,如果把var赋了别的值,那么你的函数,就把他原来的值改变了。
建议将set var=%~1也放在延迟变量里去,

测试代码如下:
::
  1. @echo off
  2. set "str=haoren就是"
  3. set var=12345
  4. set var_=aaaaaa
  5. call :GetStrLenAndStrB %str% strlen bytes
  6. echo %strlen% %bytes%
  7. echo %var%
  8. echo %var_%
  9. pause>nul
  10. :GetStrLenAndStrB Str strlen bytes
  11. for /l %%i in (0 1 200) do (
  12.    setlocal enabledelayedexpansion
  13.    set var=%~1
  14.    set "var_=!var:~%%i,1!"
  15.    if "!var_!"=="" goto :eof
  16.    if !var_! gtr Z (endlocal & set /a %3+=2) else endlocal & set /a %3+=1
  17.    set /a %2+=1
  18. )
复制代码

[ 本帖最后由 随风 于 2007-11-15 21:21 编辑 ]
技术问题请到论坛发帖求助!

TOP

返回列表