1 @echo off 2 :: 批處理中所謂的函數,是用標簽定義功能充當的。支持參數的傳遞,類似腳本文件運行時命令行參數的傳遞。 3 :: 函數返回值用標簽作為變數名作為返回使用,用完標簽名變數立即釋放變數,避免後面同樣需要調用該函數,引起返回值的混亂。 4 :: exit /b code 在標簽 ...
1 @echo off 2 :: 批處理中所謂的函數,是用標簽定義功能充當的。支持參數的傳遞,類似腳本文件運行時命令行參數的傳遞。 3 :: 函數返回值用標簽作為變數名作為返回使用,用完標簽名變數立即釋放變數,避免後面同樣需要調用該函數,引起返回值的混亂。 4 :: exit /b code 在標簽定義中表示退出當前函數,並返回錯誤狀態值code。在call調用完畢後,回到call調用處繼續執行後續指令。 5 :: 不帶/b表示直接退出cmd環境。 6 7 8 9 :::::::::::::::::::::::::::::::Main Begin:::::::::::::::::::::::::::::::::::::::::::::: 10 :Main 11 echo;歡迎進入批處理天地! 12 echo; 13 echo;加法運算開始. 14 set /p n1=請輸入第一個數字: 15 set /p n2=請輸入第二個數字: 16 17 call :IsDigital %n1% 18 set r1=%errorlevel% 19 call :IsDigital %n2% 20 set r2=%errorlevel% 21 22 23 if "%r1%"=="200" ( 24 if "%r2%"=="200" ( 25 call :Add %n1% %n2% 26 call,echo;%n1%與%n2%之和為:%%Add%% 27 ) else (echo;%n2%不是數字無法參與運算.) 28 ) else (echo;%n1%不是數字無法參與計算.) 29 30 pause & exit 31 :::::::::::::::::::::::::::::::Main End:::::::::::::::::::::::::::::::::::::::::::::: 32 33 34 :::::::::::::::::::::::::::::::Add Begin:::::::::::::::::::::::::::::::::::::::::: 35 :: 功能:兩數相加。 36 :Add 37 ::變數傳遞查看。 38 ::echo;%* 39 set /a num1=%1 40 set /a num2=%2 41 set sum= 42 set /a sum=%num1% + %num2% 43 ::echo;%num1% + %num2% = %sum% 44 ::返回值用標簽當作變數返回。 45 set /a add=%sum% &exit /b 0 46 :::::::::::::::::::::::::::::::Add End:::::::::::::::::::::::::::::::::::::::::: 47 48 :::::::::::::::::::::::::::::IsDigital Begin::::::::::::::::::::::::::::::::::::::::::: 49 :: 功能:判斷給入的字元是否是純數字。 50 :: exitcode 200 表示成功,是數字。250 表示失敗,不是數字。 51 :IsDigital 52 set "num=%1" 53 ::情況一:數字字元串中含空格。 54 ::set num=%num: =% 55 echo;%num%|findstr "^[0-9][0-9]*$" >nul && call,set IsDigital=%%num%% 56 if not defined IsDigital (echo;%num%不是數字. & exit /b 250) else (echo;%num%是純數字. & exit /b 200) 57 :::::::::::::::::::::::::::::IsDigital End:::::::::::::::::::::::::::::::::::::::::::