iT邦幫忙

1

批次檔+迴圈的功能

目前大概是這樣 但是搞不懂
1.要怎樣讓迴圈改變IP 並重複執行
2.IP的部分也可以設定迴圈嗎??

rem =====變數IP設定=====
set ip=192.168.164.1
set ip=192.168.164.2
set ip=192.168.164.3
.
.
set ip=192.168.164.252


rem =====迴圈開始=====
net use z: /delete
net use z: \\%ip%\log
copy z:\log.db %ip%_log.db 
move %ip%_log.db d:\log\
rem =====迴圈結束=====

1 個回答

1
暐翰
iT邦高手 3 級 ‧ 2018-02-08 15:43:57
最佳解答

1.要怎樣讓迴圈改變IP 並重複執行

可以,使用goto方式,讓bat重複執行

2.IP的部分也可以設定迴圈嗎??

可以,請看以下 set /a loopcount=loopcount+1

把你要實做的功能,填入 rem ----做你要做的事情----

@echo off
:loop_Start
	set loopcount=0
	set var_ip=192.168.164.
	
	:loop_Repeat
	rem ----打印----
	@echo on
	echo %var_ip%%loopcount%
	@echo off
	
	rem ----往下個IP動作----
	set /a loopcount=loopcount+1
	rem ----做你要做的事情----

	rem ----如果到ip 252時候ip重新從1開始,否則從:loop_Repeat繼續往下一個IP動作
	if %loopcount%==253 goto :loop_Start 
	goto loop_Repeat
rem --如果你想停止,請實做goto :exitloop
:exitloop
pause

假如有解答到你的問題,麻煩結案 :)

看更多先前的回應...收起先前的回應...

使用goto方式,讓bat重複執行 但這樣要怎麼結束??

if %loopcount%==253 goto :loop_Start 是這個嗎

暐翰 iT邦高手 3 級 ‧ 2018-02-08 16:00:38 檢舉

if %loopcount%==253 goto :loop_Start <--
這段是ip到xxx.xxx.xxx.252的時候重新從1開始

而想實做結束,需要自己寫一個判斷式接著goto :exitloop
就可以

程式碼改成這樣 , 程式碼的數值的部份,臨界值真的是最容易出錯的地方

@echo off
:loop_Start
	set loopcount=1
	set var_ip=192.168.164.
	
	:loop_Repeat
	rem ----打印----
	@echo on
	echo %var_ip%%loopcount%
	@echo off
	pause
	rem ----往下個IP動作----
	set /a loopcount=loopcount+1
	rem ----做你要做的事情----

	rem ----如果到ip 252時候ip重新從1開始,否則從:loop_Repeat繼續往下一個IP動作
	if %loopcount%==253 goto :exitloop
	goto loop_Repeat
rem --如果你想停止,請實做goto :exitloop
:exitloop
pause

感謝暐翰 大大的幫忙

我要發表回答

立即登入回答