引用:
作者: victor624
謝謝 getter 指教!
我參考您跟朋友改的範例,再次改寫
語法:
set num1=
set num2=
set name=
cls
echo. %titles%
echo.
echo 請輸入資料夾名稱:
set /p name=
echo.
echo.
echo 請輸入開始編號(1~9999):
set /p num1=
echo 請輸入結束編號(1~9999):
set /p num2=
if %%V LSS 10 (goto run1)
if %%V GEQ 10 LEQ 99 (goto run2)
if %%V GEQ 100 LEQ 999 (goto run3)
if %%V GEQ 1000 LEQ 9999 (goto run4)
cls
:run1
for /L %%V in (%num1%,1,%num2%) do (
IF %%V LSS 10 (call:Make_Dirs %name%000%%V)
)
:run2
for /L %%V in (%num1%,1,%num2%) do (
IF %%V GEQ 10 IF %%V LEQ 99 (call:Make_Dirs %name%00%%V)
)
:run3
for /L %%V in (%num1%,1,%num2%) do (
IF %%V GEQ 100 IF %%V LEQ 999 (call:Make_Dirs %name%0%%V)
)
:run4
for /L %%V in (%num1%,1,%num2%) do (
IF %%V GEQ 1000 IF %%V LEQ 9999 (call:Make_Dirs %name%%%V)
)
goto :eof
:Make_Dirs
mkdir %1\開發\CAD
mkdir %1\開發\PPAP
mkdir %1\開發\成本
mkdir %1\開發\成績表
mkdir %1\開發\異常
mkdir %1\品管\客訴
mkdir %1\品管\不良品統計
mkdir %1\品管\品質異常處理
mkdir %1\品管\圖片及CP
mkdir %1\品管\進料
mkdir %1\品管\出貨
mkdir %1\品管\量測資料
mkdir %1\品管\特採申請
mkdir %1\品管\產品定期稽核
mkdir %1\品管\CPKPPK
mkdir %1\品管\配合廠商
mkdir %1\車床\SOP
mkdir %1\車床\機台程式
mkdir %1\銑床\SOP
mkdir %1\銑床\機台程式
mkdir %1\後加工\SOP
goto :eof
|
那個標紅字的地方有錯誤,當有上下條件限制的時候,是兩個 IF 去作巢狀檢查
此外也可以利用 for /F 的強化指令去作字典檔的模式來作建立資料夾的控制 ...
基本上已經有一個地方有作 IF check 的話就不用去作第二次的 IF check
可以再幾個地方多些檢驗的機制
語法:
@echo off
:ReKeyIn
set num1=bbbb
set num2=cccc
set name=AA
call :Dirs
set /p "name=請輸入資料夾名稱: "
:ReNum1
set num1=bbbb
call :Dirs
set /p "num1=請輸入開始編號(1~9999): "
set /a num1=%num1%
if %num1% EQU bbbb (
echo.& echo.開始編號輸入為 0 錯誤,請重新輸入。
echo.& Pause & goto :ReNum1 )
if %num1% LSS 1 (
echo.& echo.開始編號輸入為 0 錯誤,請重新輸入。
echo.& Pause & goto :ReNum1 )
:ReNum2
set num2=cccc
call :Dirs
set /p "num2=請輸入結束編號(1~9999): "
set /a num2=%num2%
if %num2% EQU cccc (
echo.& echo.結束編號輸入為 0 錯誤,請重新輸入。
echo.& Pause & goto :ReNum2 )
if %num2% LSS 1 (
echo.& echo.結束編號輸入為 0 錯誤,請重新輸入。
echo.& Pause & goto :ReNum2 )
if %num1% GEQ %num2% (
echo.& echo.結束編號>=開始編號的錯誤,請重新輸入。
echo.& Pause & goto :ReNum2 )
call :Dirs
set /p "YesNo=請確認資料夾名稱(正確輸入 Y,錯誤要重新輸入者輸入 N): "
if /i %YesNo% == N (goto :ReKeyIn)
if %num2% LSS 10 (goto run1)
if %num2% GEQ 10 if %num2% LSS 100 (goto run2)
if %num2% GEQ 100 if %num2% LSS 1000 (goto run3)
if %num2% GEQ 1000 if %num2% LSS 10000 (goto run4)
goto :eof
:run1
for /L %%V in (%num1%,1,%num2%) do (
cls
echo.建立資料夾: %name%-000%%V
call:Make_Dirs %name%-000%%V
)
goto :eof
:run2
for /L %%V in (%num1%,1,%num2%) do (
cls
echo.建立資料夾: %name%-00%%V
call:Make_Dirs %name%-00%%V
)
goto :eof
:run3
for /L %%V in (%num1%,1,%num2%) do (
cls
echo.建立資料夾: %name%-0%%V
call:Make_Dirs %name%-0%%V
)
goto :eof
:run4
for /L %%V in (%num1%,1,%num2%) do (
cls
echo.建立資料夾: %name%-%%V
call:Make_Dirs %name%-%%V
)
goto :eof
:Dirs
cls
echo.
if %num1% EQU bbbb if %num2% EQU cccc (echo.目標主資料名稱: "%name%-%num1%"~"%name%-%num2%")
if %num1% LSS 10 if %num2% EQU cccc (echo.目標主資料名稱: "%name%-000%num1%"~"%name%-%num2%") else (echo.目標主資料名稱: "%name%-000%num1%"~"%name%-000%num2%")
if %num1% GEQ 10 if %num1% LSS 100 if %num2% EQU cccc (echo.目標主資料名稱: "%name%-00%num1%"~"%name%-%num2%") else (echo.目標主資料名稱: "%name%-00%num1%"~"%name%-00%num2%")
if %num1% GEQ 100 if %num1% LSS 1000 if %num2% EQU cccc (echo.目標主資料名稱: "%name%-0%num1%"~"%name%-%num2%") else (echo.目標主資料名稱: "%name%-0%num1%"~"%name%-0%num2%")
if %num1% GEQ 1000 if %num1% LSS 10000 (echo.目標主資料名稱: "%name%-%num1%"~"%name%-%num2%")
echo.
goto :eof
:Make_Dirs
mkdir %1\開發\CAD
mkdir %1\開發\PPAP
mkdir %1\開發\成本
mkdir %1\開發\成績表
mkdir %1\開發\異常
mkdir %1\品管\客訴
mkdir %1\品管\不良品統計
mkdir %1\品管\品質異常處理
mkdir %1\品管\圖片及CP
mkdir %1\品管\進料
mkdir %1\品管\出貨
mkdir %1\品管\量測資料
mkdir %1\品管\特採申請
mkdir %1\品管\產品定期稽核
mkdir %1\品管\CPKPPK
mkdir %1\品管\配合廠商
mkdir %1\車床\SOP
mkdir %1\車床\機台程式
mkdir %1\銑床\SOP
mkdir %1\銑床\機台程式
mkdir %1\後加工\SOP
goto :eof