2013-01-07 25 views
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 
    ) 
) 
+0

@mattedgod - 不是我見過的任何蟒蛇... – mgilson

+0

我沒有這條巨蟒的記憶...... – pcalcao

+0

@crnlx [這](http://stackoverflow.com/revisions/14201258/2)不是一個好的編輯。除非你確定你所做的是正確的,否則請不要更改標籤。如有需要,您可以要求OP澄清意見。 – Ben

回答

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 
) 
+0

謝謝!這是完美的。不勝感激。 – user1955789