Сначала необходимо убедиться, что парсер 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