1

次のコードで、空白行に遭遇したときに空白行をファイルにエコーするのに問題があります。これについてどうすればよいですか?

for /f "tokens=1,* delims=]" %%A in ('"type Setup.ini|find /n /v """') do (
set "line=%%B"
if defined line (
    call set "line=echo.%%line:PRINTER_JAM_SENSOR_PRESENT: TRUE=PRINTER_JAM_SENSOR_PRESENT: FALSE%%"
    for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X >>Setup.ini.replaced%~x1
    )
)
4

1 に答える 1

2

空白行が検出されると、line変数は空白に設定され、変数が削除されます。いつ定義されたかについては、すでにチェックがあります。 定義されていない場合のチェックを追加するだけです。

for /f "tokens=1,* delims=]" %%A in ('"type Setup.ini|find /n /v """') do (
    set "line=%%B"
    if defined line (
        call set "line=echo.%%line:PRINTER_JAM_SENSOR_PRESENT: TRUE=PRINTER_JAM_SENSOR_PRESENT: FALSE%%"
        for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X >>Setup.ini.replaced%~x1
    )
    if not defined line echo.>>Setup.ini.replaced%~x1
)

追加:これもコードですが、を使用して推奨される編集を行っていsetlocal EnableDelayedExpansionます。

for /F "tokens=1,* delims=]" %%A in ('type Setup.ini ^| find /n /v ""') do (
    set "line=%%B"
    if defined line (
        set "line=!line:PRINTER_JAM_SENSOR_PRESENT: TRUE=PRINTER_JAM_SENSOR_PRESENT: FALSE!"
        echo(!line!>>Setup.ini.replaced%~x1
    )
    if not defined line echo.>>Setup.ini.replaced%~x1
)
于 2013-01-07T18:05:18.473 に答える