我正在製作一個批處理腳本,其中我需要向用戶請求輸入。從用戶獲得輸入後,它現在將獲取該值並在數組內搜索它。如果它在裏面,它將繼續到goto
。如果失敗,則轉到另一個goto
。如何在批處理腳本中搜索用戶給定的數組中的特定值
下面是我的代碼
@echo off
set "Array[0]=830486600"
set "Array[1]=832180943"
set "Array[2]=867672488"
set "Array[3]=851091583"
set "Array[4]=105670350"
set "Array[5]=871749063"
set "Array[6]=831425861"
set "Array[7]=833386470"
set "Array[8]=845221250"
set "Array[9]=839863683"
set "Array[10]=837778733"
set "Array[11]=866184944"
set "Array[12]=863514631"
set "Array[13]=868073035"
set "Array[14]=841618088"
set /p code=Enter code:
for /F "tokens=2 delims==" %%s in ('set Array[') do (
if "%code%" == "%%s"(
goto breakit
)else (
goto breakit2
)
)
pause
:breakit
echo inside!
pause
goto eof
:breakit2
echo not inside
pause
goto eof
上面的例子只是一個樣本,但我一直面臨的一個問題是,當其輸入的用戶類型的空格,則退出程序,它不讀取有效的輸入,即使它是數組內的確切值,它仍然不會讀取它。
我可以將breakit和breakit2中的回顯部分更改爲更深刻的代碼嗎?因爲如果在數組中找到用戶的輸入,我真的打算在breakit中創建一個文件夾。更多,否則就像這樣:':firstCreateFolder md%firstFolder% goto firstFileList' then then it does it goes to another'goto' where where in request at a option。我不應該改變循環中的'call'部分或者':breakit'本身 –
不管你喜歡什麼。問題簡單的是,如果你轉到了alabel,那麼執行被轉移,而'call'將返回位置('call'後面的命令)保存到堆棧。達到物理結束文件返回執行並刪除堆棧中的最後一個位置('exit'的確如此)。如果沒有更多堆棧條目,則批處理結束。如果你願意的話,你可以永遠的意大利式代碼,就像彙編程序一樣。 – Magoo