2014-10-08 1 views
1

У меня есть строка conatining некоторых имен в запятой (,) seprated, и я хочу, чтобы сделать каталоги после расщепления запятой (,)Как разбить строку и сделать каталоги?

Например, если строка азбуки, Защиты, ГХИ

Тогда я хотят создать 3 папки с именами, как ABC и четкости и ГХИ

Я пытался как этот

@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

'мкр«% PC1%»' не работает? –

+0

@MCND Спасибо за помощь.Как в примере есть 3 значения, разделенные запятой, поэтому я могу писать pc1, pc2, pc3, но в моем случае иногда он имеет 3 значения, разделенные запятой, иногда 11, а иногда 2.Its полностью динамический – SpringLearner

+0

Do вам нужны разделенные значения, хранящиеся внутри переменных или только созданные папки? –

ответ

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

+0

@SpringLearner, да, проверьте наличие папки (теперь в ответе) или прямо игнорировать ошибку создания с помощью 'md '%% a" 2> nul', чтобы скрыть ошибки –

+0

Я читал один из ваших [ответов] (http://stackoverflow.com/questions/20782734/ open-a-url-without-use-a-browser-from-a-batch-file), вы передаете URL-адрес в качестве аргумента. Можете ли вы рассказать мне, как использовать, не передавая URL-адрес в качестве аргумента. Я хочу сохранить имя url внутри файла .cmd. – SpringLearner

Смежные вопросы