史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   一般電腦疑難討論區 (http://forum.slime.com.tw/f17.html)
-   -   如何大量新增資料夾 (http://forum.slime.com.tw/thread230433.html)

王小二 2008-05-28 11:25 AM

如何大量新增資料夾
 
如題,如何一個動作新增幾十個資料夾,而不是一個一個用滑鼠按右鍵--新增--資料夾

chiung 2008-05-28 11:46 AM

最簡單的方式就是寫批次檔,如下
====================
md 資料夾1
md 資料夾2
md 資料夾3
md 資料夾4
====================
把它存成bat檔即可.

飛鳥 2008-05-28 11:48 AM

可以建立批次檔

開新純文字檔MD.bat
內容為
引用:

md 123
md 234
md 345
....
...
..

就會建立123,234,345,等資料夾

資料夾名稱寫上去就可以

王小二 2008-05-28 01:39 PM

請怒小弟笨拙,不太意會的過來,可否再明示些,真的很不好意思:on_47:

飛鳥 2008-05-28 04:59 PM

開始->程式集->附屬應用程式->記事本

打上以下內容
引用:

md 123
md 234
md 345

按檔案->另存新檔->
路徑:桌面

檔名->makedir.bat

請確定為.bat的附檔名

再到桌面,雙擊makedir.bat就可以了

getter 2008-05-28 05:24 PM

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

欲修改資料夾的數量,把 set total=20 的 20 改掉即可。

語法:

@Echo off
set total=20

rem 本區塊註解,不會執行
rem .
rem total 為資料夾的總數量,如欲修改請改數值,預設 20 個資料夾。
rem .
rem 本區塊註解,不會執行

for /L %%V in (1,1,%total%) do (
cls
echo.
echo.
echo 建立名稱為 %%V / %total% 的資料夾
MD %%V
)

echo.
echo.
echo 建立完成,共計 %total% 個資料夾
pause


getter 2008-05-29 08:04 AM

可以只定系列名稱的 批次檔
 
另一種大量建置資料夾的批次語法

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

欲修改資料夾的數量,把 set total=20 的 20 改掉即可。
欲修改資料夾的系列名稱,把 set name=新資料夾 的 新資料夾 改掉即可。
語法:

@Echo off
set total=20
set name=新資料夾

rem 本區塊註解,不會執行
rem 
rem total 為資料夾的總數量,把 set total=20 的 20 改掉即可,
rem 如 set total=15。
rem 預設 20 個資料夾。
rem
rem 
rem name 為資料夾的系列名稱,如欲修改請改 set name=新資料夾
rem 的 "新資料夾" 改掉即可。,如 set name=NWE S。
rem 預設名稱為 "新資料夾"。
rem
rem
rem 本區塊註解,不會執行

for /L %%V in (1,1,%total%) do (
cls
echo.
echo.
echo 建立名稱為 %name% %%V 的資料夾

IF  %%V LSS 10  (MD "%name% 0%%V")  ELSE  (MD "%name% %%V")
)
echo.
echo.
echo 建立完成,共計 %total% 個資料夾
pause


王小二 2008-05-29 10:09 AM

感謝大大們細心的解說,有你們真好:on_79:

getter 2008-05-29 03:21 PM

引用:

作者: 特務生涯 (文章 1954486)
很棒的批次檔呢
請教一下
如果數字到達三位數
要補滿0的話
指令有更精簡的寫法嗎

那個寫程式比較好做 "批次檔" 很難弄,弄得出來也是一大包

getter 2008-05-29 04:49 PM

另一種大量建置資料夾的批次語法,處理補 "0" 的問題最大可新增到 9999 的資料夾
 
另一種大量建置資料夾的批次語法,處理補 "0" 的問題最大可新增到 9999 的資料夾

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

欲修改資料夾的數量,把 set total=20 的 20 改掉即可。
欲修改資料夾的系列名稱,把 set name=新資料夾 的 新資料夾 改掉即可。
語法:

@Echo off
set total=20
set name=新資料夾

rem 本區塊註解,不會執行
rem 
rem total 為資料夾的總數量,把 set total=20 的 20 改掉即可,
rem 如 set total=15。
rem 預設 20 個資料夾。
rem
rem 
rem name 為資料夾的序列名稱,如欲修改請改 set name=新資料夾
rem 的 "新資料夾" 改掉即可。,如 set name=NWE S。
rem 預設名稱為 "新資料夾"。
rem
rem
rem 本區塊註解,不會執行


set conuter=0
IF %total% LSS 10    goto F1-9
IF %total% LSS 100  goto F1-99
IF %total% LSS 1000  goto F1-999
IF %total% LSS 10000 goto F1-9999
GOTO EXIT


:F1-9
for /L %%V in (1,1,%total%) do (
cls
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.
echo.
echo 建立名稱為 %name% %%V 的資料夾
IF  %%V LSS 10 (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.
echo.
echo 建立名稱為 %name% %%V 的資料夾
IF  %%V LSS 10 (MD "%name% 00%%V") ELSE IF  %%V LSS 100 (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.
echo.
echo 建立名稱為 %name% %%V 的資料夾
IF  %%V LSS 10 (MD "%name% 000%%V") ELSE IF  %%V LSS 100 (MD "%name% 00%%V") ELSE IF  %%V LSS 1000 (MD "%name% 0%%V") ELSE (MD "%name% %%V")
set /A conuter+=1
)
GOTO EXIT


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


getter 2008-05-29 09:06 PM

引用:

作者: 特務生涯 (文章 1954987)
感謝呢
看來還真是無法精簡
必須要用
跳躍到lable的方式
原先
我本來以為LSS會有一個跟他相反的運算子(譬如more than之類的)
而可以讓變數在想要的數值範圍內被判斷
辛苦嚕

這也是沒辦法的是批次檔能用的程式化指令太少了...,
只能處立一些簡單的 FOR、IF、IF ELSE

尤其是 IF ELSE,線上說明中要同一行才行。

在來是數字位數本生身的限制問題,從 1 位數到 4 位數,要補的 0 的樣式
就會有衝突了,很難縮減指令語法,只好用 4 種方案來做自動篩選的執行。

JOHN 2008-05-30 05:04 AM

這倒是個滿有趣的題目

如果要補零,以批次檔建立
"新資料夾0001"
"新資料夾0002"

"新資料夾9999"

小弟可能會如此寫
..............................................
@Echo off
set name=新資料夾

for /L %%V in (1,1,99) do (
cls

IF %%V LSS 10 (MD "%name%000%%V")
IF %%V GEQ 10 (MD "%name%00%%V")
)

for /L %%V in (100,1,9999) do (
cls

IF %%V LSS 1000 (MD "%name%0%%V")
IF %%V GEQ 1000 (MD "%name%%%V")
)
..............................................

將虛線中的語法存為XX.bat
註解敬請參考getter前輩說明

Living 2008-05-30 05:56 AM

看到大家對這個題目的興趣, 我也想來提供一下不同的想法

用CODE來寫程式固然很好, 但對不懂程式碼的朋友可能會有點吃力

我想EXCEL應該是可以解決這個問題

在EXCEL裡先輸入MD到一個儲存格然後就一路往下拉, 複製....9999個
第二列嘛就先把格式改成"文字"然後輸入頭兩格, 分別是0001與0002, 然後也給他一路拉到9999

然後嘛就選擇"另存新檔", 並存成"格式化文字"(空白分隔)

存好檔後改一下副檔名成BAT應該就OK了吧

getter 2008-05-30 01:49 PM

引用:

作者: 特務生涯 (文章 1955608)
喔!
我看出差別了
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


getter 2008-05-30 04:09 PM

引用:

作者: 特務生涯 (文章 1955949)
太完美了:on_02:
可以稱為完美版了吧
剛剛看了指令半天
其實後面的FXXX部分大概知道在做甚麼
就是實際建立資料夾的指令
不過再來就已經超出這主題的範圍(看了老半天的就是這些)
但是再問下去不太好(可能會被D文或主題封印)
這部分我再查書看看吧
G大你太神了(這樣說可能太普通了,詞窮@@)

set /a
set /p
LEQ(這猜得出來^^|||)
%0(了解)
%1(了解)
%2(就不知道指誰了,/n?)
%3(就不知道指誰了,/t?)

沒有拉,只是以前學過的在加上現在的新增供能來做而已,改天有空再整理成教學看看。

簡單的說一下

%0 ~ %9 如圖
語法:

C:\>DMK.cmd  參數1  參數2  ....  參數9
        %0    %1    %2  ....    %9

那這樣子就可以打照自己的 CMD 命令的參數語法 /?、/n:、/t:,效果做出來可跟 DOS 命令相仿。

有些指令可以用 /? 直接查詢用法與說明,在來只是有沒有看懂的問題了。
如 if /? 這樣就能查用法了,也可以用 if /? > if.txt 把 if 的說明
存成文字檔。

在批次檔裡 > 或 >> 或 < 或 << 跟 C++ 的 Cin、Cout 用的 < 之類似
是資料流向,因此 if /? > if.txt 就是把原本會在畫面上的文字流向到
文字檔裡,因此很多批次檔會有 > 或 < 的符號,不是比大小是之料流向的
意思。


set /a & /p 是 set 的新功能
set /a 的話就可以做變數的數值演算(應該文字還沒試過)
set /a ABC+=1 就跟 C/C++ 語言裡的 i++ 或 i+=i。

set /p input= 就跟 C/C++ 的 scanf、gets 類似可以由鍵盤輸入資料

那有試這個嗎 "CMD 命令的方式下達,如 C:\>MDK /n:阿貓 /t:500 [Enter]",會滋生 500 隻阿貓唷。


註: 不要沒事去建立 9999 個資料夾 ...,會發生慘劇。


所有時間均為台北時間。現在的時間是 03:47 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1