标题: [其他] 批处理在for中使用标签循环出现错误 [打印本页]
作者: 踏沙行 时间: 2018-11-8 09:10 标题: 批处理在for中使用标签循环出现错误
已知,H:\2.txt中内容为:- " "Hello1 and hello2" "
- World1 and world2
复制代码
bat代码如下- @echo off
- Setlocal enabledelayedexpansion
- for /f "tokens=*" %%a in (H:\2.txt) do (
- echo,源1=%%a
- set "str=%%a"
- :Loop
- if "!str:~-1!"==" " (set "str=!str:~,-1!"&goto:loop)
- echo,源2=%%a
- echo,新=★!str!★
- )
复制代码
执行结果为:- 源1=" "Hello1 and hello2" "
- 源2=%a
- 新=★" "Hello1 and hello2" "★
- 请按任意键继续. . .
复制代码
【问题】
1、参量%%a,在:loop语句后,结果被清空了,为什么?
2、H:\1.txt和第2句,为什么没有参与for循环?
作者: yhcfsr 时间: 2018-11-8 17:33
:loop中断了循环,从:loop开始到程序末尾(或者遇到goto:eof)都属于标签的解析范围.
不要循环内部使用标签,用call来调用外部标签
作者: Batcher 时间: 2018-11-8 19:32
不要尝试在for循环内部使用标签
作者: /zhqsystem/zhq 时间: 2018-11-8 23:11
for内只能这种循环
for .......(
call:1
)
pause
exit
:1
特别注意如果不必要最好不要带有暂停类和死循环类命令出现
if。。。。。goto:1
goto:eof
作者: 踏沙行 时间: 2018-11-9 08:57
回复 4# /zhqsystem/zhq
本来是不想在for内部使用标签的,这种方法远远没有call调用方便,但是call 调用在带参数时,如果参数中有不规范的引号,怎么传递结果都不理想。
请看原贴:
http://www.bathome.net/thread-51243-1-1.html
作者: /zhqsystem/zhq 时间: 2018-11-10 21:58
回复 5# 踏沙行
参数传递是固定的,可以设置N个假设截取对应的值示例:
for。。。。(
set "返回数据="
set 变量=1
call:1 “!变量!”
if not defined 返回数据 echo,调用出现错误变量为空值
)
pause
:1
if not defined 变量 set "返回数据="&&goto:eof
for。。。。。do 提取需要的数据
假设正确 set "返回数据=正确的结果"
goto:eof
都可以用变量进行判断对比,如果值不如意可以用for继续提取
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |