引用:
作者: victor624
回 getter
我詳細說明這次新增的功能
首先選第3項 會要求輸入資料夾名稱(第一層) 假如是AAA
之後她會帶入TXT檔內部的資料夾名稱(第二層)
之後AAA底下會產生TXT的編號 TXT底下會帶出:Make_Dirs所有子資料夾
因為這些編號不連貫 所以必須透過TXT檔帶入
選項1-2功能不變 主要是給編號連續的時候使用的
請指教 謝謝!!
TXT內容
|
也就是說就是 AAA\TXT內容\Make_Dirs意思嗎
語法:
@Echo off
setlocal
cd /d %~dp0
set Version=6.0
set titles=大量新增資料夾 %Version% 版
set TXT_File=%~n0.txt
title=%titles%
:選單
cls
echo.%titles%:選單畫面
echo.╔═══════════╗
echo.║編碼選擇: ║
echo.║ 1.後 3 碼,請按 1 ║
echo.║ 2.後 4 碼,請按 2 ║
echo.║ 3.載入 TXT 檔,請按 3║
echo.║ ║
echo.║ 0.離開 ║
echo.╚═══════════╝
set /p select=請選擇:
set /a select=%select%
if %select% == 0 ( goto :End )
if %select% GTR 0 if %select% LEQ 3 ( cls & goto Function_%select% )
echo.輸入錯誤,請重新輸入
echo.
pause
goto :選單
:End
endlocal
exit
:Function_1
echo. %titles%:後 3 碼
call :Input
call :Run_Make_Continuous_Dir
goto :End
:Function_2
echo. %titles%:後 4 碼
call :Input
call :Run_Make_Continuous_Dir
goto :End
:Function_3
echo. %titles%:載入 TXT 檔
echo.
if not exist "%TXT_File%" (
echo.找不到 %TXT_File% 的錯誤,執行終止。
echo.
pause
goto :End
)
set /p name=請輸入資料夾名稱:
echo.
echo.
mkdir %name%
for /F "eol=; tokens=1 delims=." %%V in ( %TXT_File% ) do (
call :Make_Dirs "%name%\%%V" )
goto :End
:Input
echo.
set /p name=請輸入資料夾名稱:
echo.
:num-1
set /p num1=請輸入開始編號:
set /a num1=%num1%
if %select% == 1 ( if %num1% GTR 0 if %num1% LSS 1000 goto :num-2 ) & goto :num-1
if %select% == 2 ( if %num1% GTR 0 if %num1% LSS 10000 goto :num-2 ) & goto :num-1
:num-2
echo.
set /p num2=請輸入結束編號:
set /a num2=%num2%
if %select% == 1 ( if %num2% GTR %num1% if %num2% LSS 1000 goto :eof ) & goto :num-2
if %select% == 2 ( if %num2% GTR %num1% if %num2% LSS 10000 goto :eof ) & goto :num-2
goto :eof
:Run_Make_Continuous_Dir
for /L %%V in (%num1%,1,%num2%) do (
rem 後 3 碼方法
if %select% == 1 if %%V LSS 10 ( call :Make_Dirs "%name%-00%%V" )
if %select% == 1 if %%V GEQ 10 if %%V LSS 100 ( call :Make_Dirs "%name%-0%%V" )
if %select% == 1 if %%V GEQ 100 if %%V LSS 1000 ( call :Make_Dirs "%name%-%%V" )
rem 後 4 碼方法
if %select% == 2 if %%V LSS 10 ( call :Make_Dirs "%name%-000%%V" )
if %select% == 2 if %%V GEQ 10 if %%V LSS 100 ( call :Make_Dirs "%name%-00%%V" )
if %select% == 2 if %%V GEQ 100 if %%V LSS 1000 ( call :Make_Dirs "%name%-0%%V" )
if %select% == 2 if %%V GEQ 1000 if %%V LSS 10000 ( call :Make_Dirs "%name%-%%V" )
)
goto :eof
:Make_Dirs
if "%~1" == "" goto :eof
rem =======開 發 單 位 =======
mkdir "%~1\開發\APQP"
mkdir "%~1\開發\CAD"
mkdir "%~1\開發\mail紀錄"
mkdir "%~1\開發\PCR"
mkdir "%~1\開發\PPAP"
mkdir "%~1\開發\包裝"
mkdir "%~1\開發\成本"
mkdir "%~1\開發\成績表"
mkdir "%~1\開發\附件相片圖示"
mkdir "%~1\開發\特採"
mkdir "%~1\開發\異常"
mkdir "%~1\開發\設計變更"
rem =======品 管 單 位 =======
mkdir "%~1\品管\客訴"
mkdir "%~1\品管\不良品統計"
mkdir "%~1\品管\品質異常處理"
mkdir "%~1\品管\圖片及CP"
mkdir "%~1\品管\進料"
mkdir "%~1\品管\出貨"
mkdir "%~1\品管\量測資料"
mkdir "%~1\品管\特採申請"
mkdir "%~1\品管\產品定期稽核"
mkdir "%~1\品管\CPKPPK"
mkdir "%~1\品管\配合廠商"
rem =======車 床 單 位 =======
mkdir "%~1\車床\SOP"
mkdir "%~1\車床\機台程式"
rem =======銑 床 單 位 =======
mkdir "%~1\銑床\SOP"
mkdir "%~1\銑床\機台程式"
rem =======後 加 工 單 位 =======
mkdir "%~1\後加工\SOP"
goto :eof
大致上有測試過一些條件
1.要能依照那個意思建立資料夾,需要有正確的指令給予才行,如
mkdir %name% 以及
"%name%\%%V"。當然沒有給對,自然就沒有作用。
2.標籤的部份,可以使用中文,但是要注意系統的 CMD 本版是否有支援到,若怕不支援還是建議用英文編寫。
3.當以 3 號選項執行時,要注意一些事情,文字檔的部份可能,初期測試發現會在 \ 的位置有另外建立 資料夾,
此也加入
if "%~1" == "" goto :eof 的語法抑制。可能受不同的 CMD 版本有無作用要在注意。
4.TXT 檔名,目前設定是以
set TXT_File=%~n0.txt 控制著,需要與批次檔的主檔名相同的 .txt。
如 abc.bat 的話就要是 abc.txt 才能正常執行。
5.因為有使用 txt 檔,有加入
if not exist "%TXT_File%" 用來找尋,
有沒有 txt 檔的存在,有的話第 3 項才可以正常執行。
6.有關於 txt 檔的部份,一開始的行數是不回會跳過的。以『;』為註解符號,也就是說
『;』開頭的是註解,不會被讀入的。
7.有大幅調整一部分的語法,使用了某些如類似 java 的觀念,如單一功能的多行集合之類。具有數值的質範圍除錯的機能、
選單重回機制(這是基本選單該有的功能吧),使用了某種特殊的選單值域 goto 的方式,就不用一堆 goto :1~3。
數值輸入也有修改,有使用某種檢驗機制,就某些狀況來說有輸入的檢驗機制是對的,因此使用了數值化檢驗的方式。
如 set /a num=%num%,這個動作是把輸入的『字串的數字』變成了『數值的數字』,其實就是資料型態的轉換。
如 01 跟 1 的差別。以人的觀點來說不都是 1 嗎? 對電腦來說,卻是不一樣的,是數值的 1 還是文字的 1。在電腦內不
這兩著是完全不一樣的。數值的 1 可以作運算的,文字的 1 只有表示的作用。因此需要轉換。再進一步給 if 判斷,這樣
就比較不容易出錯了。
8."%~1" 這個目的,是為了避免 " 符號問題,在迪西的電腦測試,結果是不影響結果的。但別的電腦,可能因為不同的
CMD 或 Command.com 的版本不同而可能會不一樣。
9.在變數符號上面加上 " 符號,如 "%%1" 或是 "%num%"。是為了確保該變數傳遞的正確文字範圍,不會混到而外的
空白字符 。此外當變數內容需要有空白字符時,如 "abc 123",才會被確定是一個完整的資料,而不會被解讀成兩個資
料。
txt檔的大約內容如下
語法:
;3323-119 註解行
;3603-226 註解行
3603;227
; 註解行
3703-232
3703-233
3703-238
3703-239
總之就是測試 ... 多測試 ...