查看單個文章
舊 2008-05-30, 01:49 PM   #14 (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 金幣
預設

引用:
作者: 特務生涯 查看文章
喔!
我看出差別了
G大所寫方式的是基於Total為單一變數的情況
因為不一定要做到99,999,或9999
可能只想做到336
所以必須做多重判斷

而J大的方式是基於"就是想做這麼多"
所以程式可以盡量精簡就精簡

L大的方式
也是我以前常做的方式
在EXCEL做完想要的字串後
再貼到筆記本存成批次檔

/L LSS GEQ
這3個以前都很少接觸過耶
感謝教學^^
聰明,我不希望資料夾的數量與名稱綁死,要可以輸入改變,這樣日後用會比較好用。

這就是程式設計的考量差異 ...,是要用的時候都在改東改西? 還是改個參數就好。


使用 EXECL 或許是很不錯啦,萬一連 OFFICE 軟體都沒有,那可就累了。
我以前就是用記事本在弄,覺得很累,後來知道 "批次檔" 有一些簡單的程式
語法可用時,我就輕鬆多了。

----------------------------------------------------------------------------------
以雙重 IF 所構成的值範圍的方式來建構 "大量建置資料夾的批次語法",最大
可新增到 9999 的資料夾

把以下語法方塊的內容,用記事本另存成副檔名 cmd 或 bat 的檔案,主檔隨便
如 MDK.cmd,完成後點兩下該檔案即可。


執行後會問你資料夾的名稱、數量,名稱輸入完按[Entre]、數量輸入完按 [Entre],
運氣好會執行,原因是出在於數量,不能在輸入數量的地方輸入非數字的文字,如AA
、你好、2 2 之類,如此將強制結束。 --> 這是批次檔的問題,很不好除錯,除非用程式解決。

不輸入名稱、數量,直接按 [Enter],會以預設值進行理,(預設:新資料夾,10個)

也可用 CMD 命令的方式下達,如 C:\>MDK /n:阿貓 /t:500 [Enter]
查詢如何使用 CMD 模式,則是 C:\>MDK /? [Enter]

語法:
@Echo off
set titles=%0 大量建置系列資料夾名稱的批次檔 ver 0.3 版
TITLE=%titles%

set totaldf=10
set namedf=新資料夾 

set total=%totaldf%
set name=%namedf%

if "%1" == "/h"    (goto hlp)
if "%1" == "/H"    (goto hlp)
if "%1" == "/help" (goto hlp)
if "%1" == "/HELP" (goto hlp)
if "%1" == "/?"    (goto hlp)
if "%1" == ""      (goto run3)
if "%2" == ""      (goto run1)
if "%3" == ""      (goto run2)
goto error

:hlp
cls
echo ============================================================================
echo. %titles% 
echo.
echo. 語法: %0 /n:名稱  /t:數量
echo.
echo. 參數 1:%0 /n:名稱  : 指定系列資料夾的名稱
echo.
echo. 參數 2:%0 /t:數量  : 指定系列資料夾的建立數量
echo.
echo. 參數 3:%0 /?       : 說明
echo.
echo.
echo.
echo. ex: %0 /n:圖片       [Enter] 產生名稱為 "圖片" 的資料夾,預設數量 %totaldf% 個
echo.
echo. ex: %0 /t:15         [Enter] 產生 15 個,預設系列名稱的資料夾
echo.
echo. ex: %0 /n:圖片 /t:15 [Enter] 產生名稱為 "圖片" 的資料夾,預設數量 15 個
echo.
echo.
echo.
echo. 直接執行 %0 [Enter] 時,預設創建 %totaldf% 個 以『%namedf%』為系列名稱的資料夾
echo.
echo.  
echo ============================================================================
goto end

:error
cls
echo ============================================================================
echo. %titles%
echo. 
echo. 語法錯誤! 或 數值錯誤!
echo.
echo. 語法: %0 /n:名稱  /t:數量
echo.
echo. 參數 1:%0 /n:名稱  : 指定系列資料夾的名稱
echo.
echo. 參數 2:%0 /t:數量  : 指定系列資料夾的建立數量,1~9999 個
echo.
echo. 參數 3:%0 /?       : 說明
echo.
echo.
echo.
echo. ex: %0 /n:圖片       [Enter] 產生名稱為 "圖片" 的資料夾,預設數量 %totaldf% 個
echo.
echo. ex: %0 /t:15         [Enter] 產生 15 個,預設系列名稱的資料夾
echo.
echo. ex: %0 /n:圖片 /t:15 [Enter] 產生名稱為 "圖片" 的資料夾,預設數量 15 個
echo.
echo.
echo.
echo. 直接執行 %0 [Enter] 時,預設創建 %totaldf% 個 以『%namedf%』為系列名稱的資料夾
echo.
echo.  
echo ============================================================================
goto end


:run1
set txet1=%1
if "%txet1:~3%" == ""   (goto error) 
if "%txet1:~0,3%" == "/n:"  (set name=%txet1:~3% & goto default)
if "%txet1:~0,3%" == "/N:"  (set name=%txet1:~3% & goto default)
if "%txet1:~0,3%" == "/t:"  (set total=%txet1:~3% & goto default)
if "%txet1:~0,3%" == "/T:"  (set total=%txet1:~3% & goto default)
goto error

:run2
set txet1=%1
set txet2=%2
if "%txet1:~3%" == "" (goto error)
if "%txet2:~3%" == "" (goto error)
if "%txet1:~0,3%" == "/n:" (set name=%txet1:~3%)  
if "%txet1:~0,3%" == "/N:" (set name=%txet1:~3%)  
if "%txet1:~0,3%" == "/t:" (set total=%txet1:~3%)   
if "%txet1:~0,3%" == "/T:" (set total=%txet1:~3%)
if "%txet2:~0,3%" == "/n:" (set name=%txet2:~3% & goto default)  
if "%txet2:~0,3%" == "/N:" (set name=%txet2:~3% & goto default)  
if "%txet2:~0,3%" == "/t:" (set total=%txet2:~3% & goto default)   
if "%txet2:~0,3%" == "/T:" (set total=%txet2:~3% & goto default) 
goto error


:run3
set totalp=
set namep=
cls
echo. %titles%
echo.
echo.
echo 請輸入系列資料夾的名稱:
set /p namep=
echo.
echo.
echo 請輸入系列資料夾的建置數量,1~9999 個:
set /p totalp=

if "%namep%" == ""  (echo.) else (set name=%namep%) 
if "%totalp%" == "" (echo.) else (set total=%totalp%) 
goto default


:default
cls
set conuter=0
if %total% GEQ 1     if %total% LEQ 9     (goto F1-9)
if %total% GEQ 10    if %total% LEQ 99    (goto F1-99) 
if %total% GEQ 100   if %total% LEQ 999   (goto F1-999)
if %total% GEQ 1000  if %total% LEQ 9999  (goto F1-9999)
goto error


:F1-9
for /L %%V in (1,1,%total%) do (
cls
echo. %titles%
echo.
echo.
echo 建立名稱為 %name%%%V 的資料夾
MD "%name%%%V" 
set /A conuter+=1
) 
goto EXIT


:F1-99
for /L %%V in (1,1,%total%) do (
cls
echo. %titles%
echo.
echo.
echo 建立名稱為 %name%%%V 的資料夾
if %%V GEQ 1  if %%V LEQ 9  (MD "%name%0%%V") else  (MD "%name%%%V")
set /A conuter+=1 
) 
goto EXIT


:F1-999
for /L %%V in (1,1,%total%) do (
cls
echo. %titles%
echo.
echo.
echo 建立名稱為 %name%%%V 的資料夾
if %%V GEQ 1   if %%V LEQ 9   (MD "%name%00%%V")
if %%V GEQ 10  if %%V LEQ 99  (MD "%name%0%%V") else  (MD "%name%%%V")
set /A conuter+=1
) 
goto EXIT


:F1-9999
for /L %%V in (1,1,%total%) do (
cls
echo. %titles% 
echo.
echo.
echo 建立名稱為 %name%%%V 的資料夾
if %%V GEQ 1    if %%V LEQ 9    (MD "%name%000%%V")
if %%V GEQ 10   if %%V LEQ 99   (MD "%name%00%%V")
if %%V GEQ 100  if %%V LEQ 999  (MD "%name%0%%V") else  (MD "%name%%%V")

set /A conuter+=1
) 
goto EXIT


:EXIT
echo.
echo.
echo 建立完成,共計 %conuter% 個資料夾
goto end

:end
echo.
echo.
pause
__________________
在「專業主討論區」中的問題解決後,要記得按一下 http://forum.slime.com.tw/images/stamps/is_solved.gif 按鈕喔,
這是一種禮貌動作。

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

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

迪西:「再見~ 再見~」

Otaku Culture Party 關心您 ...
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
有 3 位會員向 getter 送花:
lkmdnwden (2018-08-23),rw5767 (2011-08-21),特務生涯 (2008-05-30)
感謝您發表一篇好文章