Пакет: побег - PullRequest
       39

Пакет: побег

0 голосов
/ 03 июля 2018

Я пытаюсь создать простой командный файл, который будет копировать все строки со строкой width="10 из .htm файла в .txt , но я застрял с двойной кавычкой " в символе строка

Мой код:

for /F "tokens=*" %%g in ('FINDSTR /C:"width=\"10" "htmfile.htm"') do (echo %%g >> test.txt)


'FINDSTR /C:"width=' это все еще работает, но когда я добавляю ", оно больше не работает. Я добавил экранирование \", а также попробовал ^", но он все еще не работает.


Буду рад любой помощи.

1 Ответ

0 голосов
/ 03 июля 2018

Сначала необходимо убедиться, что парсер cmd.exe отправляет строку правильного соответствия на FindStr, , т. Е. /C:"width=\"". Для этого я бы предложил экранировать двойную кавычку со стандартным символом escape, каретой, ^.

Я действительно не вижу цели цикла For, (если только вы не пытаетесь удалить какой-либо начальный пробел) :

@Echo Off
FindStr /C:"width=\"10^" "htmfile.htm" 2>Nul >"test.txt"
Pause

Поскольку содержимое скобок For проходит через другой экземпляр cmd.exe, вам нужно экранировать символ экранирования каретки с помощью еще двух карет:

@Echo Off
For /F "Tokens=*" %%A In ('FindStr /C:"width=\"10^^^" "htmfile.htm" 2^>Nul'
) Do (Echo %%A)>>"test.txt"
Pause
...