引用:
作者: 王小二
100個檔案及100個資料夾,放在同一個資料夾內
100個檔案名稱和100個資料夾名稱同名
例如:
有001年度~100年度的檔案及資料夾
--------------------------------------------------
或者是否可以在一個資料夾內有100個檔案,利用批次檔產生100個資料夾,順勢各別帶入100個檔案.
|
不管是寫程式或是批次檔 ... 如果檔案名稱有格式化命名的話就依據那個格式化命名 ...
迪西新作 mk_dir v0.4
除了原本的 [系列_編號] 的方式命名外,修改成可以選擇成 [編號_系列]
此外,CMD Line 的參數模式,可以不用去在意那的,參數的位置了 ...
當然檔案又變大了,足足多了兩倍,當然這是為了彈性畫得功能才做的 ...
再來就是要利用呼叫批次檔的功能來作進階的控制 ...
1.先格式化分類檔案名稱。
2.依據先格式化好的依據,建立系列資料夾。
3.依據格式化分類檔案名稱的條件在個別丟檔案到各自的資料夾。
以上是大致的流程,不管是程式或是批次檔,大致就是這樣 ...
當然這需所寫得批次檔,格式要能夠戶搭且可以互通 ...
以下就是依照上述流程寫出來的簡化版批次檔 ....
語法:
@Echo off
setlocal
set name=年度
set nemb=5
call Mk_dir.cmd /s /n:%name% /t:%nemb%
for /L %%a in (1,1,%nemb%) do (move "%%a%name%*.*" "%%a%name%")
pause
endlocal
以下是新作的批次檔 MK_DIR v0.4,複製貼上即可使用,
語法:
@Echo off
setlocal
set titles=大量建置系列資料夾名稱的批次檔 ver 0.4 版
TITLE=%titles%
set totaldf=10
set namedf=新資料夾
set selectdf=1
set total=%totaldf%
set name=%namedf%
set select=%selectdf%
::CMD Line Mode
set flag=0
set cmd_n=0
::處理 ?h、help、n:、t:、s 的狀況
if "%1" == "" goto :flag_select
set cmd_l=%1
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
if "%2" == "" goto :flag_select
set cmd_l=%2
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
if "%3" == "" goto :flag_select
set cmd_l=%3
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
if "%4" == "" goto :flag_select
set cmd_l=%4
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
if "%5" == "" goto :flag_select
set cmd_l=%5
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
if "%6" == "" goto :flag_select
set cmd_l=%6
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
if "%7" == "" goto :flag_select
set cmd_l=%7
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
if "%8" == "" goto :flag_select
set cmd_l=%8
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
if "%9" == "" goto :flag_select
set cmd_l=%9
set /a cmd_n+=1
if /i "%cmd_l:~0,1%" == "/" (call :cmd_Symbols)
if /i "%cmd_l:~0,1%" == "-" (call :cmd_Symbols)
:flag_select
if %cmd_n% LEQ 3 (
if %flag% GEQ 128 goto :help
if %flag% EQU 0 goto :run_f0
if %flag% EQU 1 goto :run_f1
if %flag% EQU 2 goto :run_f2
if %flag% EQU 3 goto :run_f3
if %flag% EQU 5 goto :run_f5
if %flag% EQU 6 goto :run_f6
if %flag% EQU 7 goto :run_f7
) else (
set /a "flag|=128"
goto :help
)
goto :end
::CMD_Line=
:run_f0
call :input_set
call :input_name
call :input_number
call :input_exchange
goto :number_format
::CMD_Line=-n:
:run_f1
call :input_set
call :input_number
call :input_exchange
goto :number_format
::CMD_Line=-t:
:run_f2
call :input_set
call :input_name
call :input_exchange
goto :number_format
::CMD_Line=-n:、-t:
:run_f3
call :input_set
call :input_exchange
goto :number_format
::CMD_Line=-s
:run_f4
call :input_set
call :input_name
call :input_number
goto :number_format
::CMD_Line=-n:、-s
:run_f5
call :input_set
call :input_number
goto :number_format
::CMD_Line=-t:、-s
:run_f6
call :input_set
call :input_name
goto :number_format
::CMD_Line=-n:、-t:、-s
:run_f7
goto :number_format
:number_format
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)
set /a "flag|=128"
goto :help
:F1-9
for /L %%V in (1,1,%total%) do (
cls
echo. %titles%
echo.
echo.
if %select% EQU 1 (
echo 建立名稱為 [%name%%%V] 的資料夾
MD "%name%%%V"
) else (
echo 建立名稱為 [%%V%name%] 的資料夾
MD "%%V%name%"
)
set /A conuter+=1
)
goto :EXIT
:F1-99
for /L %%V in (1,1,%total%) do (
cls
echo. %titles%
echo.
echo.
if %select% EQU 1 (
echo 建立名稱為 [%name%%%V] 的資料夾
if %%V GEQ 1 if %%V LEQ 9 (>nul 2>nul MD "%name%0%%V") else (>nul 2>nul MD "%name%%%V")
) else (
echo 建立名稱為 [%%V%name%] 的資料夾
if %%V GEQ 1 if %%V LEQ 9 (>nul 2>nul MD "0%%V%name%") else (>nul 2>nul MD "%%V%name%")
)
set /A conuter+=1
)
goto :EXIT
:F1-999
for /L %%V in (1,1,%total%) do (
cls
echo. %titles%
echo.
echo.
if %select% EQU 1 (
echo 建立名稱為 [%name%%%V] 的資料夾
if %%V GEQ 1 if %%V LEQ 9 (>nul 2>nul MD "%name%00%%V")
if %%V GEQ 10 if %%V LEQ 99 (>nul 2>nul MD "%name%0%%V") else (>nul 2>nul MD "%name%%%V")
) else (
echo 建立名稱為 [%name%%%V] 的資料夾
if %%V GEQ 1 if %%V LEQ 9 (>nul 2>nul MD "00%%V%name%")
if %%V GEQ 10 if %%V LEQ 99 (>nul 2>nul MD "0%%V%name%") else (>nul 2>nul MD "%%V%name%")
)
set /A conuter+=1
)
goto :EXIT
:F1-9999
for /L %%V in (1,1,%total%) do (
cls
echo. %titles%
echo.
echo.
if %select% EQU 1 (
echo 建立名稱為 [%name%%%V] 的資料夾
if %%V GEQ 1 if %%V LEQ 9 (>nul 2>nul MD "%name%000%%V")
if %%V GEQ 10 if %%V LEQ 99 (>nul 2>nul MD "%name%00%%V")
if %%V GEQ 100 if %%V LEQ 999 (>nul 2>nul MD "%name%0%%V") else (>nul 2>nul MD "%name%%%V")
) else (
echo 建立名稱為 [%%V%name%] 的資料夾
if %%V GEQ 1 if %%V LEQ 9 (>nul 2>nul MD "000%%V%name%")
if %%V GEQ 10 if %%V LEQ 99 (>nul 2>nul MD "00%%V%name%")
if %%V GEQ 100 if %%V LEQ 999 (>nul 2>nul MD "0%%V%name%") else (>nul 2>nul MD "%%V%name%")
)
set /A conuter+=1
)
goto :EXIT
:EXIT
echo.
echo.
echo 建立完成,共計 %conuter% 個資料夾
echo.
echo.
rem pause
goto :end
:end
endlocal
goto :eof
:input_set
cls
echo. %titles%
goto :eof
:input_name
set "input="
echo.
echo.
echo. 1.請輸入系列資料夾的名稱。
set /p input= (未輸入以預設值:新資料夾)=
if "%input%" == "" (echo.) else (set name=%input%)
goto :eof
:input_number
set "input="
echo.
echo.
echo. 2.請輸入系列資料夾的建置數量,1~9999 個。
set /p input= (未輸入以預設值:10)=
if "%input%" == "" (echo.) else (set total=%input%)
goto :eof
:input_exchange
set "input="
echo.
echo.
echo. 3.請選擇系列資料夾的名稱樣式。
echo.
echo. 1.%name%%total% 2.%total%%name%
echo.
set /p input= (請選擇[1/2],預設為[%name%%total%])=
if %input% GTR 2 (
call :input_set
goto :input_exchange
)
if "%input%" == "" (echo.) else (set select=%input%)
goto :eof
goto :eof
:cmd_Symbols
if /i "%cmd_l:~1%" == "help" set /a "flag|=128"
if /i "%cmd_l:~1,1%" == "" set /a "flag|=128"
if /i "%cmd_l:~1,1%" == "?" set /a "flag|=128"
if /i "%cmd_l:~1%" == "h" set /a "flag|=128"
if /i "%cmd_l:~1,2%" == "n:" (
set /a "flag|=1"
set "name=%cmd_l:~3%"
)
if /i "%cmd_l:~1,2%" == "t:" (
set /a "flag|=2"
set "total=%cmd_l:~3%"
)
if /i "%cmd_l:~1%" == "s" (
set /a "flag|=4"
set "select=2"
)
goto :eof
:help
cls
echo ============================================================================
echo. %titles%
echo.
if %flag% GTR 128 (
echo. 語法錯誤! 或 數值錯誤!
echo.
)
echo. 語法: %0 /n:系列名稱 /t:數量 /s
echo.
echo. 參數 1:%0 /n:系列名稱 : 指定系列資料夾的名稱
echo.
echo. 參數 2:%0 /t:數量 : 指定系列資料夾的建立數量
echo.
echo. 參數 2:%0 /s : 指系列名稱與編號前後互換
echo.
echo. 參數 4:%0 /? : 說明
echo.
echo.
echo ============================================================================
echo.
echo.
pause
cls
echo ============================================================================
echo. %titles%
echo.
echo. ex: %0 /n:圖片 [Enter] 產生名稱為 "圖片" 的資料夾,預設數量 %totaldf% 個
echo.
echo. ex: %0 /t:15 [Enter] 產生 15 個,預設系列名稱的資料夾
echo.
echo. ex: %0 /n:圖片 /t:15 [Enter] 產生名稱為 "圖片00~圖片15" 的資料夾 15 個
echo.
echo. ex: %0 /n:圖片 /t:15 /s [Enter] 產生名稱為 "00圖片~15圖片" 的資料夾 15 個
echo.
echo.
echo. 直接執行 %0 [Enter] 時,預設創建 %totaldf% 個 以『%namedf%』為系列名稱的資料夾
echo.
echo ============================================================================
echo.
echo.
pause
goto :eof