Win Batch, отдельная строка для нескольких - PullRequest
0 голосов
/ 08 мая 2018

У меня есть 2 разных текстовых файла. Каждый содержит одну строку, содержащую несколько параметров и / или абсолютных путей. Каждый отдельный параметр и / или путь заключен в двойные кавычки:

-d"some_param" -d"next_param"
-i"c:\some_path" -i"c:\other_path"

Я хочу разбить это на несколько строк, чтобы один параметр или путь были в одной строке. Я подумал, что это может помочь вставить определенный токен разделения, потому что один из параметров или путей может содержать пробел. Поэтому я использую LL_FF для более легкой обработки.

LL_FF

Файл содержимого 1:

-d"__CHAR_BIT=8"LL_FF -d"__SHRT_BIT=16"LL_FF -d"__INT_BIT=32"LL_FF -d"__LONG_BIT=32"LL_FF -d"CPU_S32K144HFT0VLLT"LL_FF  

Файл содержимого 2:

-i"C:\Users\somePath\s_proc\C_s32k_conf1\inc"LL_FF -i "C:\Users\somePath\s_sysprj\includes\prjIncludes\inc"LL_FF -i"C:\Users\somePath\s_sysprj\can\canDeviceDriver\inc"LL_FF -i"C:\Users\somePath\s_sysprj\hal\clock\inc"LL_FF -i"C:\Users\somePath\s_sysprj\hal\intWatchdog\inc"LL_FF -i"C:\Users\somePath\s_sysprj\hal\timer\inc"LL_FF -i"C:\Users\somePath\s_sysprj\hal\periphery\inc"LL_FF -i"C:\Users\somePath\s_sysprj\os\taskGroupManager\inc"LL_FF -i"C:\Users\somePath\s_sysprj\os\osInterface\inc"LL_FF

Мне не удалось написать командный файл, генерирующий следующий вывод:

Файл 1:

-d"__CHAR_BIT=8"
-d"__SHRT_BIT=16"
-d"__INT_BIT=32"
-d"__LONG_BIT=32"
-d"CPU_S32K144HFT0VLLT"

Файл 2:

-i"C:\Users\somePath\s_proc\C_s32k_conf1\inc"
-i"C:\Users\somePath\s_sysprj\includes\prjIncludes\inc"
-i"C:\Users\somePath\s_sysprj\can\canDeviceDriver\inc"
-i"C:\Users\somePath\s_sysprj\hal\clock\inc"
-i"C:\Users\somePath\s_sysprj\hal\intWatchdog\inc"
-i"C:\Users\somePath\s_sysprj\hal\timer\inc"
-i"C:\Users\somePath\s_sysprj\hal\periphery\inc"
-i"C:\Users\somePath\s_sysprj\os\taskGroupManager\inc"
-i"C:\Users\somePath\s_sysprj\os\osInterface\inc"

В списке параметров есть высокая вероятность того, что он будет содержать специальные символы, такие как пробелы, *, = И это должен быть пакетный скрипт. Может кто-нибудь помочь мне, пожалуйста?

Спасибо и всего наилучшего.

Что я пробовал: с использованием синтаксиса замены не удалось из-за специальных символов \ r \ n

относительно этого я попробовал это:

rem @echo off
SET /p _text=<defines.lnt
echo %_text%
echo
for %%f in ("%_text:LL_FF";"%") do echo aaa %%ff

Мне удается прочитать файл, но я не получаю вывод из цикла.

Я также нашел решения, которые могут работать, но они слишком сложны, чтобы быть полезными для меня, так как мне нужно много времени, чтобы понять ... Поэтому отсюда и мой пост.

Путь к комплексу

1 Ответ

0 голосов
/ 09 мая 2018

Ниже приведен пример пакетного файла кода, который я предоставил в своем комментарии:

@Echo Off
For /F "Delims=" %%A In ('Type File*.txt 2^>Nul') Do For %%B In (%%~A
) Do >>Params.txt Echo %%B

Это должно поместить строку из каждого из файлов, File1.txt и File2.txt, в новый файл с именем Params.txt, каждый на отдельной строке в соответствии с запросом.

...