Board logo

标题: [文件操作] 批处理文件中%0前面加上call为何出错了呢? [打印本页]

作者: saint_Zuo    时间: 2012-2-23 10:35     标题: 批处理文件中%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
复制代码

作者: cjiabing    时间: 2012-2-23 10:48

回复 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
复制代码

作者: QIAOXINGXING    时间: 2012-2-23 14:58

本帖最后由 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 显示
复制代码

作者: terse    时间: 2012-2-23 15:36

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

好久不来了哦  你指的错是来自那里 提示?
作者: cjiabing    时间: 2012-2-23 16:37

回复 3# QIAOXINGXING


    你不是照样用?我是提示而已,没测试过。
作者: QIAOXINGXING    时间: 2012-2-23 19:39

回复  QIAOXINGXING


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



    好吧,我有点盲目崇拜版主,以为版主不会发错误的代码,发代码都会测试。。。。。。。。。
作者: Perl    时间: 2012-2-23 21:11

回复 6# QIAOXINGXING


带着鄙视版主的战略思想,很快就能超过版主。
作者: cjiabing    时间: 2012-2-23 23:23

回复 6# QIAOXINGXING

呵呵,知错了吧!~只是按想的贴代码,没测试过,确实没空。
作者: cjiabing    时间: 2012-2-24 00:11

回复 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 静夜思 床前明月光 疑是地上霜 举头望明月 低头思故乡
复制代码

作者: QIAOXINGXING    时间: 2012-2-24 15:10

回复 9# cjiabing


    版主都发飙了,还怎么会有问题。。。。。。
  嗯,体谅版主的辛苦,半夜还在坛子里转。
  虽然我没在几个论坛混过,但是我觉得bathhome确实很好!!!
作者: powerbat    时间: 2012-2-24 16:14

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



    +1!

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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2