查看單個文章
舊 2013-10-31, 04:35 PM   #5 (permalink)
getter
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

引用:
作者: 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

此帖於 2013-12-10 11:34 AM 被 getter 編輯.
__________________
在「專業主討論區」中的問題解決後,要記得按一下 http://forum.slime.com.tw/images/stamps/is_solved.gif 按鈕喔,
這是一種禮貌動作。

一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。
不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。

天線寶寶說再見啦~ ... 天線寶寶說再見啦~

迪西:「再見~ 再見~」

Otaku Culture Party 關心您 ...
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
有 3 位會員向 getter 送花:
a471 (2013-11-01),grc45 (2013-11-01),丹楓 (2013-10-31)
感謝您發表一篇好文章