2017-04-17 35 views
0

創建文件夾我想有一個批處理文件,在那裏我可以指定一個路徑,如 C:\用戶\蒙克\桌面\所有文件\ ,然後它會是指定的目錄中創建一個文件夾。批次輸入目錄

目前它所做的只是在我的桌面上創建名稱爲Im的輸入文件夾。例如,如果我輸入「所有文件\開發」進入會,我的桌面上,創建一個名爲「所有」和「文件」

@echo off 
color 0C 

:main 
cls 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
set /p dir=Enter directory: 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
goto create 
pause 

:create 

md "C:\Users\Munch\Desktop\%dir%\new" 
pause 

兩個文件夾,如果我將MD線改爲

md "\%dir%\new" 

然後在我的批量輸入中輸入「C:\ Users \ Munch \ Desktop \ All Files」 它仍然是一樣的。

任何幫助將是偉大的!

+0

第一個變體適合我。嘗試在'md'之前添加'@echo on'並檢查變量替換後,如何使用'md'看起來如何。 –

+1

以開始處的反斜槓開始的路徑相對於當前驅動器的根。您可以通過打開命令提示符窗口並運行'dir/A \ *'來查看當前驅動器的根目錄中的所有文件和目錄,而不管哪個子目錄是當前目錄。 – Mofi

回答

0

你的問題是你的md/mkdir命令的路徑被指定爲「root-relative」 - 也就是說,你有驅動器規格或反斜槓作爲路徑的第一個字符。

相反,您忽略了這一點,使用

@echo off 
color 0C 

:main 
cls 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
set /p dir=Enter directory: 
echo =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
goto create 
pause 

:create 

md "%dir%\new" 
pause 

沒有領先\C:\...。需要注意的是,如果您沒有提供完整路徑(從\開始或驅動器的根目錄[C:\]),則新目錄將在相對路徑中創建 - 也就是說,請輸入C:\FOO,然後調用該批處理文件並在提示符下輸入BAR\BAZ\QUUX,將創建的文件夾將爲C:\FOO\BAR\BAZ\QUUX\NEW。如果提供驅動器但不提供驅動器的根目錄(例如,D:BAR\BAZ\QUUX),則將相對於該驅動器上的當前目錄創建新文件夾(例如,如果D:上的當前目錄是D:\YOTTA,則創建的文件夾將是D:\YOTTA\BAR\BAZ\QUUX\NEW)。

0

你的問題是,你顯然是輸入所需的目錄名引號。

由此,實際的命令被執行是

md "C:\Users\Munch\Desktop\"All Files\Development"\new" 

爲MD "C:\Users\Munch\Desktop\"AllFiles\Development"\new"

所以正在創建兩個目錄這被解釋。

真正簡單的解決方案是省略引號。

的編程溶液,在忘記的情況下,是將md命令內從dir剝去引號。

md "U:\Users\Munch\Desktop\%dir:"=%\new"