0

このエラーを修正するにはどうすればよいですか?

@echo off 
Setlocal EnableDelayedExpansion

REM LINES FOR TEST:
REM         <td><span><span>41</span><span style="display: none;">111</span><div
REM style="display: none;">190</div><span class="" style="">.</span><span>197</span><span
REM style="display: none;">24</span><span></span>.<span style="display: 
REM inline;">132</span><span style="display: none;">39</span>.<span 
REM style="display: inline;">186</span></span></td> 

SET line=inline;">132</span><span style="display: none;">39</span>.<span 

FOR /F "tokens=1-20 delims=<>" %%A IN (%line%) DO (
echo A:%%A + B:%%B + C:%%C + D:%%D + E:%%E + F:%%F + G:%%G + H:%%H + I:%%I + J:%%J + K:%%K + L:%%L
FOR %%? in ( "%%A", "%%B", "%%C", "%%D", "%%E", "%%F", "%%G", "%%H", "%%I", "%%J") DO (
SET $=%%?
echo $:!$!
)
pause
)

タグで行を区切りたい。しかし、エラーが発生しました: > 予期されていません

編集:

I tried this:
SET line=inline;">132</span><span style="display: none;">39</span>.<span 
FOR /F usebackq^ tokens^=1-20^ delims^=^>^< %%A IN (^"%line%^") DO (
echo A:%%A + B:%%B + C:%%C + D:%%D + E:%%E + F:%%F + G:%%G + H:%%H + I:%%I + J:%%J + K:%%K + L:%%L
FOR %%? in ( "%%A", "%%B", "%%C", "%%D", "%%E", "%%F", "%%G", "%%H", "%%I", "%%J") DO (
SET $=%%?
echo $:!$!
)
pause
)

エラー: システムはインラインでファイルを見つけることができません ">132

別のテスト-行をファイルに移動しましたが、エラーはありません

FOR /F "delims= " %%? IN (html_2.txt) DO ( echo %%? FOR /F "tokens=1-20 delims=><" %%A IN ("%%?") DO ( echo A:%%A + B:%%B + C:%%C + D:%%D + E:%%E + F:%%F + G:%%G + H:%%H + I:%%I + J:%%J + K:%%K + L:%%L FOR %%? in ( "%%A", "%%B", "%%C", "%%D", "%%E", "%%F", "%%G", "%%H", "%%I", "%%J") DO ( SET $=%%~? echo $:!$! ) pause ) )

4

4 に答える 4

1

これを試して:

FOR /F "tokens=1 delims=" %%A IN (html_2.txt) DO (
    set a=%%A 
    set a=!a:"=\q!
    echo a=!a!
    FOR /F "tokens=1-26 delims=<>" %%a in ( "!a!" ) DO ( 
        set a=%%a& echo $:!a:\q="!
        set b=%%b& echo $:!b:\q="!
        set c=%%c& echo $:!c:\q="!
        set d=%%d& echo $:!d:\q="!
        set e=%%e& echo $:!e:\q="!
        set f=%%f& echo $:!f:\q="!
        set g=%%g& echo $:!g:\q="!
        set h=%%h& echo $:!h:\q="!
        rem repeat thru to z
        )
    pause
    )
于 2012-06-21T21:01:34.207 に答える
1

<および>リダイレクト演算子である場合、それらをエスケープする必要があります。^>

于 2012-06-21T16:27:10.570 に答える
0

Skip R のコードの短縮版は次のとおりです。

@echo off 
Setlocal EnableDelayedExpansion

FOR /F "tokens=1 delims=" %%A IN (html_2.txt) DO (
    set a=%%A 
    set a=!a:"=\q!
    echo a=!a!
    FOR /F "tokens=1-26 delims=<>" %%A in ( "!a!" ) DO ( 
        FOR %%Z in ( %%A, %%B, %%C, %%D, %%E, %%F, %%G, %%H, %%I, %%J) DO (
        set z=%%Z
        echo !z:\q="!
        )
    )
    pause
)
于 2012-06-22T07:09:12.697 に答える
0

問題はあなたのFOR/Fループにはありません。での変数の展開lineですFOR/F ... in (^"%line%^")
ここで遅延展開を使用するか、ファイルからコンテンツをより適切に読み取ります。

これにより、感嘆符やキャレットを考慮せずに問題が処理されます。

@echo off 
setlocal EnableDelayedExpansion

FOR /F "tokens=1-26 delims=<>" %%A IN (html_2.txt) DO (
   echo a=%%A
   echo b=%%B
   echo c=%%C
   echo d=%%D
   echo e=%%E
   rem ...
   echo z=%%Z
)

感嘆符とキャレットを保持する場合は、遅延展開モードを切り替えて、値を一時変数に保存する必要があります。
EOL 文字を無効にするために、delim 以外の文字に設定しました。

@echo off 
setlocal DisableDelayedExpansion

FOR /F "tokens=1-26 EOL=< delims=<>" %%A IN (html_2.txt) DO (
    set "paramA=%%A"
    set "paramB=%%B"
    set "paramC=%%C"
    rem ...
    set "paramZ=%%Z"

   setlocal EnableDelayedExpansion
   echo a=!paramA!
   echo b=!paramB!
   echo c=!paramC!
   rem ...
   echo z=!paramZ!
   endlocal
)

html_2.txt でテスト済み:

<td><span><span>41</span><span style="display: none;">111</span><div
style="display: none;">190</div><span class="" style="">.</span><span>197</span><span
style="display: none;">24</span><span></span>.<span style="display: 
inline;">132</span><span style="display: none;">39</span>.<span 
style="display: inline;">186</span></span></td>
于 2012-06-26T07:43:22.333 に答える