iT邦幫忙

0

BAT 編寫求助 (錯誤訊息判斷)

資料夾結構:

0000_XXXX1.txt
0000_XXXX2.txt
0001_XXXX1.txt

程式碼:

set /p fs= 店舗番号を入力ください :

For  /F  %%f in ('dir/b %fs%*') do (
	echo %%	 
	set /a fcount+=1
        echo. !fcount!.%%f
	set f!fcount!=%%f

問題:

用 for 迴圈查找KEYWORD類似檔案,若查無檔案時如何回歸至使用者輸入呢??
如何判定錯誤參數呢??

求各位先進幫幫忙,感謝不盡!!!

看更多先前的討論...收起先前的討論...
slime iT邦大師 1 級 ‧ 2019-07-04 15:01:11 檢舉
dir /b 表示只在目前執行的目錄下執行.

所以可以用 if exist 來判斷此目錄下是否有檔案, 例如: (大約寫法, 未實測.)
:input
set /p fs=1234:

if not exist %fs%* goto :input

for ....
narumi iT邦新手 5 級 ‧ 2019-07-04 15:10:07 檢舉
感謝前輩的回答,前輩的答案其實跟小弟預想的一樣用事前判定.想說有沒有辦法在進入迴圈後用IF去判斷訊息然後跳回輸入呢?
小成 iT邦高手 10 級 ‧ 2019-07-04 15:24:44 檢舉
就slime大說的 :input 跟 if .......... goto :input,把判斷放到 for 裡
或是用%errorlevel%
下圖給你參考
https://i.imgur.com/zyr2Dxz.png
narumi iT邦新手 5 級 ‧ 2019-07-04 15:29:25 檢舉
感謝小成前輩,您圖片裡的方式小弟有試過。但透過for 則 errorlevel 的回傳一直為0,這點讓小弟一直沒辦法把判斷式丟進for裡面...
slime iT邦大師 1 級 ‧ 2019-07-04 15:41:35 檢舉
應該先考慮, for 是先抓檔案清單, 才依檔案清單處理, 如果 for 一開始的檔案清單就是空的, 迴圈就結束了, 那什麼情況下會有"有在檔案清單內, 但要執行命令時卻找不到檔案"?
narumi iT邦新手 5 級 ‧ 2019-07-04 15:43:38 檢舉
目前修改成以下CODE是可以執行,但為何把判斷丟進FOR裡就沒辦法運作這點讓小弟很在意啊XDD

@echo off&setlocal enabledelayedexpansion
set basepath=D:

:start

CLS

ECHO ■=リモート システム=■
ECHO.

set /a fcount=0
set /a b=0


set /p fs= 店舗番号を入力ください または 0 で EXIT :

if %fs% == 0 (
goto end
)

for /l %%a in (0,1,4) do (
set /a b+=1
if not "!fs:~%%a,1!"=="" (
set c=!b!
)
)


if %c% GTR 4 (
set /p="番号は4桁のみ!"
goto start
)
if not exist %fs%* (
set /p=" ファイルが見つかりません"
goto start
)

ECHO ■====リスト====■
ECHO.
For /F %%f in ('dir/b %fs%*') do (
set /a fcount+=1
echo. !fcount!.%%f
set f!fcount!=%%f
)
ECHO.
ECHO ■----------------------■

:rekeyin
set /p fc= 執行したい番号を入力ください :

if %fc% GTR %fcount% (
set /p="項目数より多い過ぎので、もう一度入力ください!"
goto rekeyin
) else (
!f%fc%!
)

goto start

:end

set /p="ご利用ありがとうございました!"

exit
narumi iT邦新手 5 級 ‧ 2019-07-04 15:52:44 檢舉
slime前輩,你的解說讓小弟醍醐灌頂,茅舍頓開。小弟沒想到若一開始就結果則下面就不會執行。
感謝!!

尚未有邦友回答

立即登入回答