bat中for循环嵌套

终于实现了for循环嵌套,特此记录

@echo off
@setlocal enabledelayedexpansion
:loop
set P4PORT=127.0.0.1:1666
set P4USER=game_svr
set P4CLIENT=win_stable
set P4ROOT=d:\p4
set DIFFTOOL="C:\Program Files (x86)\Beyond Compare\BCompare.exe"

set /P remaincsv=csv name: %=%
set /P branchlist=branch: %=%

:split
for /f "tokens=1* delims= " %%a in ("%remaincsv%") do (

	set csvname=%%a
	set remaincsv=%%b
	
	set remainbranch=%branchlist%

	:subsplit
	for /f "tokens=1* delims= " %%c in ("%remainbranch%") do (
		set branchname=%%c		

		cd %P4ROOT%\%%c\client\SGameClient\res\table
		p4 diff -f %csvname% | findstr "^> " > d:\%%c_%csvname%.diff

		cd %P4ROOT%\stable\client\SGameClient\res\table
		p4 diff -f %csvname% | findstr "^> "  > d:\stable_%csvname%.diff

		%DIFFTOOL% d:\%%c_%csvname%.diff d:\stable_%csvname%.diff

		set remainbranch=%%d
	)

	if defined remainbranch goto :subsplit
)

if defined remaincsv goto :split

goto :loop
pause

网上看了很多教程,很少讲分割字符串然后遍历所有列的,现在我实现了这种逻辑。这里需要注意一下,第二层循环的总列表需要在第一层用一个变量承载,不然在第一次二层循环完成之后,这个队列就会清空。

### 回答1: 在 `for` 循环,可以使用 `break` 关键字来退出整个循环,或使用 `continue` 关键字跳过当前循环。 例如,在以下代码,当 `i` 的值为 3 时,会使用 `break` 语句退出循环: ```python for i in range(1, 6): if i == 3: break print(i) ``` 输出结果为: ``` 1 2 ``` 而在以下代码,当 `i` 的值为 3 时,会使用 `continue` 语句跳过当前循环: ```python for i in range(1, 6): if i == 3: continue print(i) ``` 输出结果为: ``` 1 2 4 5 ``` ### 回答2: 在BAT脚本,我们可以使用`goto`语句来断for循环并退出。下面是一个示例: ```batch @echo off for /L %%i in (1,1,10) do ( echo %%i if %%i equ 5 ( goto :exit_loop ) ) goto :eof :exit_loop echo 循环已退出 ``` 在上面的示例,我们使用`for /L`命令创建了一个从1到10的循环。在每次迭代,我们打印出当前的计数器值。当计数器`%%i`的值等于5时,我们使用`goto`语句跳转到标签`:exit_loop`,从而断了循环。在`:exit_loop`标签处,我们输出一条消息表示循环已经退出。 需要注意的是,使用`goto`语句断循环后,脚本会继续执行剩下的代码。在上述示例,我们使用了`goto :eof`语句来指示脚本到达文件的末尾,从而结束脚本的执行。这样可以避免继续执行循环之后的代码。 ### 回答3: 在使用Python编程语言时,退出for循环的一种常见方式是使用break关键字。当循环遇到break语句时,程序会立即退出当前的循环,继续执行循环之后的代码。 例如,我们可以使用一个for循环输出1到10的数字,但当数字达到5时,我们希望退出循环。可以像下面这样使用break来实现: ```python for i in range(1, 11): print(i) if i == 5: break ``` 上面的代码会输出数字1到5,然后立即退出循环。在这个例子,当i等于5时,break语句会被执行,跳出当前的for循环。 需要注意的是,break关键字只会退出最内层的循环,如果存在嵌套的for循环,只有最内层的循环会被退出,外层的循环仍然会继续执行。 除了break之外,还有其他的方式可以退出for循环,如使用return语句结束函数的执行、使用sys.exit()终止整个程序的运行等。但这些方式在退出for循环时并不常用。一般情况下,我们会使用break关键字来退出for循环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值