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

[代码合集] 批处理if……goto……语句无法正常跳转到指定标签是什么原因

本帖最后由 pcl_test 于 2016-11-17 12:46 编辑

请帮我看下重启机器的批处理有什么错误?
@echo off
echo 是否选择重起机器...
set /p input=请输入"y"或"n". <2.txt
if "%input%" == "y" goto s
if "%input%" == "n" goto n
:s

ping -n 1 127.1 >1.txt
:n
echo 123 >3.txt



我在2.txt里输入y或n都只能得到3.txt
是那里错了!!!

当然这样。
set/p = <file都是取文件最后一行的。
心绪平和,眼藏静谧。

TOP

回复 2楼 的帖子

应该是第一行,不是最后一行吧。
  1. @echo off
  2. echo 是否选择重起机器...
  3. set /p input=请输入"y"或"n". <2.txt
  4. if "%input%" == "y" (
  5.   goto :s
  6. ) else if "%input%" == "n" (
  7.   goto :n
  8. )
  9. :s
  10. >1.txt ping -n 1 127.1
  11. goto :eof
  12. :n
  13. >3.txt echo 123
复制代码

TOP

我狂倒!!
楼上的兄弟看清我的问话!!
我是说在2.txt里输入y或n都只能得到3.txt
说明什么???说明2.txt只有一个撒!!!......真是的!!!
为什么y也会指向:n呢!!!


不懂

TOP

我狂倒!!
楼上的兄弟看清我的代码!!
你在2.txt里输入y或n都只能得到3.txt
说明什么???说明你还不了解那个代码是怎样跳转的!!!......真是的!!!
为什么y也会指向:n呢!!!因为你少写了goto :eof

不懂就多看教程^_^

TOP

TO:4#    因为你少写了goto :eof

TO:5#    不懂就多看教程^_^这句话可能是他学习的动力了.

TOP

回复 3楼 的帖子

多谢指出 差不多混淆了。
心绪平和,眼藏静谧。

TOP

斑竹大哥!
我测试了加goto :eof成功了!!
不过是在每个标签前加了才成功的!!!!
为什么不给我说!!!........


goto :eof是什么意思??

TOP

楼主大哥!
本来就是加goto :eof才能成功!!
确实需要在每个标签前加了才成功的,批处理就是这样运行的!!!!
为什么不仔细看别人给出的代码!!!........


goto :eof的意思是跳转到该批处理文件的末尾

TOP

谢谢 大哥门!!
真热心

TOP

比较字符串的批处理if命令哪里错了?

  1. @echo off
  2. set /p var=请输入第一个比较字符:
  3. set /p var2=请输入第二个比较字符(多输入个空格试试):
  4. if "%var%" == "%var2%" (goto a)
  5. :a
  6. cls
  7. echo yes
  8. :b
  9. cls
  10. echo no
  11. pause
复制代码
为什么光是出现no而这段代码是正确的?
  1. @echo off
  2. set /p var=请输入第一个比较字符:
  3. set /p var2=请输入第二个比较字符(多输入个空格试试):
  4. if "%var%" == "%var2%" (echo yes) else echo no
  5. pause
复制代码
本人已死!不用联系!~
要联系下来联系!~~

TOP

那错的代码,我相信每行意思你都懂,那句if "%var%" == "%var2%" (goto a)
等效于去掉它,因为无论是否满足都是顺序执行随后的 :a , 且执行完:a 的部分后还会继续执行 :b 的部分
自己琢磨一下吧

TOP

退出点问题。这点我感觉你能想到啊!!!
  1. @echo off
  2. set /p var=请输入第一个比较字符:
  3. set /p var2=请输入第二个比较字符(多输入个空格试试):
  4. if "%var%" == "%var2%" (goto a)
  5. :a
  6. cls
  7. echo yes
  8. pause>nul&goto :eof
  9. :b
  10. cls
  11. echo no
  12. pause
复制代码
没有改什么,只是加上一句而以
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

因为出现的yes杯第二个cls清除掉了。你可以将第二个cls去掉看看。

TOP

呵呵~以前我也有这样的错误因为你
如果if成立那么他的确运行了echo yes
但是因为没有退出命令那么他还会继续运行下去自然就运行了:b的内容了,就cls&echo no 了~~~~

TOP

返回列表