2014-10-08 35 views
1

我有一個字符串conatining逗號一些名字(,)seprated,我想使用逗號分割後使目錄(,)如何拆分字符串並創建目錄?

例如,如果字符串是ABC,DEF,GHI

然後我要創建3個文件夾命名爲ABC和DEF和GHI

我試過這樣

@echo off&setlocal 
set "data_set_path=def,ghi,jkl" 
REM first split by commas 
for /f "tokens=1-4 delims=," %%i in ("%data_set_path%") do set "pc1=%%i"& set "pc2=%%j"& set "pc3=%%k"&set "pc4=%%l" 
<nul set/p"=1st split: %pc1% %pc2% %pc2% %pc4%"&echo( 

我可以分割字符串,但我不知道如何與這些名稱創建文件夾

身體能幫助我嗎?

+0

'MD 「%PC1%」'不起作用? – 2014-10-08 09:29:06

+0

@MCND謝謝你的幫助。在這個例子中有3個逗號分隔值,所以我可以寫pc1,pc2,pc3,但在我的情況下,有時它有3個逗號分隔值,有時是11,有時是2.它完全是動態的 – SpringLearner 2014-10-08 09:32:03

+0

你需要存儲在變量中的拆分值還是隻創建文件夾? – 2014-10-08 09:33:20

回答

2
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    rem The easy one 
    set "data_set_path=def,ghi,jkl" 
    for %%a in (%data_set_path%) do if not exist "%%a" md "%%a" 

    rem A more "elaborated" to allow spaces in the folders 
    set "data_set_path=first folder,second folder,third folder" 
    for %%a in ("%data_set_path:,=","%") do if not exist "%%a" md "%%~a" 

由於逗號是內部for命令的分隔符,你可以遍歷變量內容(第一個選項)

如果要允許文件夾名稱內部空間(即也是一個分隔符在for命令中),可以使用一個簡單的技巧,將逗號替換爲","和所引用的變量,然後將值first folder,second folder,third folder轉換爲"first folder","second folder","third folder",然後重複使用逗號作爲分隔符,但保留空格里面的文件夾名稱

這第二種方法,也需要如果文件夾名稱可以包含其他特殊字符(&;>< ...)

+0

感謝您的答案。是否有任何方法可以忽略現有的文件夾?在本答案中,如果文件夾存在,則顯示*子目錄或文件的第一個文件夾已存在* – SpringLearner 2014-10-08 09:46:51

+0

@SpringLearner,是的,檢查是否存在文件夾(現在在答案中)或直接忽略創建錯誤使用'md「%% a」2> nul'來隱藏錯誤 – 2014-10-08 09:49:09

+0

我正在閱讀你的[答案]之一(http://stackoverflow.com/questions/20782734/沒有使用瀏覽器從一個批處理文件),你傳遞的網址作爲參數。請你告訴我如何使用,而不通過網址作爲一個arguement.I想將URL名稱保存在.cmd文件中。 – SpringLearner 2015-03-12 14:01:16