很顯然,%folderName%
看起來是空的,正如您在包含md
命令接收的路徑參數的錯誤消息中所看到的。所以md
試圖創建已經存在的目錄Desktop
。
如果即使輸入有效的目錄名稱時仍然出現錯誤,我確信代碼片段是圓括號之間的塊的一部分,在這種情況下,您需要啓用並應用delayed expansion。否則,在整個模塊執行之前,您需要讀取folderName
值。
例如,以下塊被命令解釋器視爲單個命令行; %folderName%
膨脹(通過它的值代替)只要整個線/塊被解析:
(
echo What do you want the folder to be called?
set /P folderName=
md "%USERPROFILE%\desktop\%folderName%"
)
在下文中,延遲擴展被使能(由setlocal
);要實際使用它,%
擴展已更改爲!
;所以!folderName!
擴展(讀取)後,只要它被執行:
setlocal EnableDelayedExpansion
rem ...
(
echo What do you want the folder to be called?
set /P folderName=
md "%USERPROFILE%\desktop\!folderName!"
)
rem ...
endlocal
注意的folderName
改變值,一旦不再爲endlocal
已執行,或批處理文件終止(其中,隱含endlocal
發生)。
除了上述,我把引號的路徑圍繞在md
命令,以避免與白色空格或特殊字符的麻煩,我改變了C:\Users\%USERNAME%
到%USERPROFILE%
在Stephan's comment建議。
您的批處理文件適用於我。只有當我按Enter鍵而不指定子文件夾名稱時,我纔會得到與您相同的結果。 – ConnorsFan
它適合我。嘗試回顯變量並暫停以查看它的價值。此外,如果您不輸入任何內容,將會出現該錯誤。 – CalebB
我修好了,謝謝! – Coder101