Пакетная обработка - извлечение каждого слова в строке в ссылку на уценку - PullRequest
0 голосов
/ 29 марта 2019

Это код звонка над ним. Я извлекаю строку 5 из файла с этим кодом, который оставляет его в %% c. Затем я хочу взять каждое слово в этой строке (может быть от 1 до n-го слова) и создать ссылку на уценку, например

[word](word.html)

и добавьте их в текстовый файл. Это то, что я до сих пор. Если у меня есть 10 слов, действительно ли мне нужно добавить в команду все токены, такие как %% d, %% e и т. Д.? Могу ли я использовать что-то вроде токенов = 1- *. * имеется в виду последний токен в строке? Я считаю, что использование токенов = * использует всю строку слов как один токен.

setlocal enabledelayedexpansion
set "lineNr=5"
set /a lineNr-=1
for /f "usebackq delims=" %%c in (`more +!lineNr! "%~1"`) DO (
for /f "tokens=1-2 delims= " %%d in ("%%c") do (
echo [%%d]^(tags/%%d.html^) [%%e]^(tags/%%e.html^) ^<br^> >> index.txt
)
goto :eof
)

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

ОК, я получил это, выполнив это -

set "lineNr=5"
set /a lineNr-=1
for /f "usebackq delims=" %%c in (`more +%lineNr% "overview.md"`) DO (
set "line=%%c"
goto :next
)
:next
for %%i in (%line%) do echo| set /p =[%%i](tags/%%i.html) >> index.txt

Нужно выйти из списка строк цикла после первой строки (строка 5).

0 голосов
/ 29 марта 2019

Вот пример того, как вы можете это сделать. Примечание. Я просто использовал некоторые части в качестве примера, так как у меня сейчас нет времени на форматирование escape-символов, но вы поймете идею :)

@echo off
set "lineNr=5"
set /a lineNr-=1
for /f "usebackq delims=" %%c in (`more +%lineNr% "%~1"`) DO set "line=%%c"
for %%i in (%line%) do echo| set /p =[%%i](tags/%%i.html)>>index.txt
...