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

[文件操作] 批处理文件中%0前面加上call为何出错了呢?

%0是调用批处理本身,也可以表示自身的完整路径加文件名。Call的语法可以用“call 批处理文件名 第一实参 第二实参…”。
那么为什么下面的语句中%0前面加上call就出错了呢?此时%0不能算批处理文件自身的完整路径加文件名吗?另外能否用call调用批处理文件的自身时加入实参(%1,%2)呢?
  1. set/a m+=1
  2. if %m%==11  exit
  3. echo %m%
  4. pause
  5. call  %0
复制代码

回复 1# saint_Zuo


    引用自身会导致死循环!~需要仔细处理。
    如果想使用%1等参数最好这样:
  1. @echo off
  2. echo ——
  3. echo 显示:%1
  4. echo ——
  5. if defined %1 goto :eof
  6. call  %0   你好北海!~
  7. echo 显示结束。
  8. pause
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

本帖最后由 QIAOXINGXING 于 2012-2-23 15:03 编辑

回复 2# cjiabing


    %1 好像不能用defined 吧??
  1. @echo off
  2. call :1 aaa
  3. pause & exit
  4. :1
  5. echo %1
  6. if defined %1 echo 不显示
  7. set "a=%1"
  8. if defined a echo 显示
复制代码

TOP

%0是调用批处理本身,也可以表示自身的完整路径加文件名。Call的语法可以用“call 批处理文件名 第一实参 第 ...
saint_Zuo 发表于 2012-2-23 10:35

好久不来了哦  你指的错是来自那里 提示?

TOP

回复 3# QIAOXINGXING


    你不是照样用?我是提示而已,没测试过。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复  QIAOXINGXING


    你不是照样用?我是提示而已,没测试过。
cjiabing 发表于 2012-2-23 16:37



    好吧,我有点盲目崇拜版主,以为版主不会发错误的代码,发代码都会测试。。。。。。。。。

TOP

回复 6# QIAOXINGXING


带着鄙视版主的战略思想,很快就能超过版主。

TOP

回复 6# QIAOXINGXING

呵呵,知错了吧!~只是按想的贴代码,没测试过,确实没空。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 3# QIAOXINGXING

你测试下,如果没有问题报告下!~
   
  1. @echo off
  2. set /a var=1+%var%>nul 2>nul
  3. echo;
  4. echo ——————————
  5. echo 显示:1【%var%】%1、%2、%3、%4、%5
  6. echo ——————————
  7. pause>nul
  8. echo;
  9. echo ——————————
  10. echo 显示:2【%var%】%1、%2、%3、%4、%5
  11. if not defined %1 goto bb
  12. ::注意,使用not和不使用not的区别是很大的,使用not后能够发挥功能,但发生错误,而不使用则毫无意义。
  13. echo ——————————
  14. pause>nul
  15. :aa
  16. set /a var+=1
  17. echo;
  18. echo ——————————
  19. echo 显示:3【%var%】%1、%2、%3、%4、%5
  20. echo ——————————
  21. echo;你会把我遗忘吗?
  22. pause>nul
  23. :bb
  24. echo;
  25. echo ——————————
  26. echo 显示:4【%var%】%1、%2、%3、%4、%5
  27. echo ——————————
  28. pause>nul
  29. cls
  30. if %var%==1 call %0 静夜思
  31. if %var%==2 call %0 静夜思 床前明月光
  32. if %var%==3 call %0 静夜思 床前明月光 疑是地上霜
  33. if %var%==4 call %0 静夜思 床前明月光 疑是地上霜 举头望明月
  34. if %var%==5 call %0 静夜思 床前明月光 疑是地上霜 举头望明月 低头思故乡
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 9# cjiabing


    版主都发飙了,还怎么会有问题。。。。。。
  嗯,体谅版主的辛苦,半夜还在坛子里转。
  虽然我没在几个论坛混过,但是我觉得bathhome确实很好!!!

TOP

好久不来了哦  你指的错是来自那里 提示?
terse 发表于 2012-2-23 15:36



    +1!

只有这个回复才是真理,其他都是浮云。。。
连错误都不知道,根据什么给答案?都是YY、想当然。。。

TOP

返回列表