标题: [代码合集] 批处理if……goto……语句无法正常跳转到指定标签是什么原因 [打印本页]
作者: jellyhk 时间: 2008-8-4 23:44 标题: 批处理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
是那里错了!!!
作者: pusofalse 时间: 2008-8-4 23:47
当然这样。
set/p = <file都是取文件最后一行的。
作者: Batcher 时间: 2008-8-5 09:46 标题: 回复 2楼 的帖子
应该是第一行,不是最后一行吧。- @echo off
- echo 是否选择重起机器...
- set /p input=请输入"y"或"n". <2.txt
- if "%input%" == "y" (
- goto :s
- ) else if "%input%" == "n" (
- goto :n
- )
- :s
- >1.txt ping -n 1 127.1
- goto :eof
- :n
- >3.txt echo 123
复制代码
作者: jellyhk 时间: 2008-8-8 23:48
我狂倒!!
楼上的兄弟看清我的问话!!
我是说在2.txt里输入y或n都只能得到3.txt
说明什么???说明2.txt只有一个撒!!!......真是的!!!
为什么y也会指向:n呢!!!
不懂
作者: Batcher 时间: 2008-8-9 01:37
我狂倒!!
楼上的兄弟看清我的代码!!
你在2.txt里输入y或n都只能得到3.txt
说明什么???说明你还不了解那个代码是怎样跳转的!!!......真是的!!!
为什么y也会指向:n呢!!!因为你少写了goto :eof
不懂就多看教程^_^
作者: onebat 时间: 2008-8-9 03:23
TO:4# 因为你少写了goto :eof
TO:5# 不懂就多看教程^_^这句话可能是他学习的动力了.
作者: pusofalse 时间: 2008-8-9 04:03 标题: 回复 3楼 的帖子
多谢指出 差不多混淆了。
作者: jellyhk 时间: 2008-8-10 23:34
斑竹大哥!
我测试了加goto :eof成功了!!
不过是在每个标签前加了才成功的!!!!
为什么不给我说!!!........
goto :eof是什么意思??
作者: Batcher 时间: 2008-8-11 01:56
楼主大哥!
本来就是加goto :eof才能成功!!
确实需要在每个标签前加了才成功的,批处理就是这样运行的!!!!
为什么不仔细看别人给出的代码!!!........
goto :eof的意思是跳转到该批处理文件的末尾
作者: jellyhk 时间: 2008-8-13 00:41
谢谢 大哥门!!
真热心
作者: jellyhk 时间: 2011-11-11 16:57 标题: 比较字符串的批处理if命令哪里错了?
- @echo off
- set /p var=请输入第一个比较字符:
- set /p var2=请输入第二个比较字符(多输入个空格试试):
- if "%var%" == "%var2%" (goto a)
- :a
- cls
- echo yes
-
- :b
- cls
- echo no
- pause
复制代码
为什么光是出现no而这段代码是正确的?- @echo off
- set /p var=请输入第一个比较字符:
- set /p var2=请输入第二个比较字符(多输入个空格试试):
-
- if "%var%" == "%var2%" (echo yes) else echo no
- pause
复制代码
作者: yyykkkyyyy 时间: 2011-11-11 17:21
那错的代码,我相信每行意思你都懂,那句if "%var%" == "%var2%" (goto a)
等效于去掉它,因为无论是否满足都是顺序执行随后的 :a , 且执行完:a 的部分后还会继续执行 :b 的部分
自己琢磨一下吧
作者: wc726842270 时间: 2011-11-11 17:25
退出点问题。这点我感觉你能想到啊!!!- @echo off
- set /p var=请输入第一个比较字符:
- set /p var2=请输入第二个比较字符(多输入个空格试试):
- if "%var%" == "%var2%" (goto a)
- :a
- cls
- echo yes
- pause>nul&goto :eof
- :b
- cls
- echo no
- pause
复制代码
没有改什么,只是加上一句而以
作者: lvsehuaxue 时间: 2011-11-11 17:31
因为出现的yes杯第二个cls清除掉了。你可以将第二个cls去掉看看。
作者: BS0小陈 时间: 2011-11-11 19:17
呵呵~以前我也有这样的错误因为你
如果if成立那么他的确运行了echo yes
但是因为没有退出命令那么他还会继续运行下去自然就运行了:b的内容了,就cls&echo no 了~~~~
作者: 920168 时间: 2011-11-11 19:34
- @echo off
- set /p var=请输入第一个比较字符:
- set /p var2=请输入第二个比较字符(多输入个空格试试):
- cls
- if "%var%" == "%var2%" (echo yes) else (echo no)
- pause
复制代码
作者: Hello123World 时间: 2011-11-14 12:41
3楼的代码说明了问题。
标签也是代码,不控制就会按顺序执行。
例如:- @echo off
- :a
- echo hello
- :b
- echo world
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |