2009-08-13 6 views
0

J'ai un petit fichier de commandes à rechercher et à remplacer dans un fichier batch. J'ai de la difficulté à supprimer des choses (par exemple remplacer du texte avec une valeur nulle). Je suis sûr que c'est simple mais rien trouvé en cherchant!Windows Recherche par lots et remplacement Question

Ceci est le fichier:

Où vous voyez et yyyyy est xxxxx où je besoin d'un vide!

Cheers.

@echo off 
setlocal enabledelayedexpansion 

if exist %~n1.bugs%~x1 del %~n1.bugs%~x1 

if not exist "%1" (echo this file does not exist...)&goto :eof 

set FIND_LOGO_1_DATA=logo_data_0 101 
set FIND_LOGO_2_DATA=logo_data_0 102 
set FIND_LOGO_3_DATA=logo_data_0 103 
set FIND_LOGO_4_DATA=logo_data_0 104 
set FIND_LOGO_5_DATA=logo_data_0 107 
set FIND_LOGO_6_DATA=logo_data_0 108 
set FIND_LOGO_7_DATA=logo_data_0 109 
set FIND_LOGO_8_DATA=logo_data_0 110 
set FIND_LOGO_9_DATA=logo_data_0 105 
set FIND_LOGO_10_DATA=logo_data_0 106 


for /f "tokens=* delims=" %%a in (%1) do (

    set write=%%a 
    if "%%a"=="logo_0 2" set write=xxxxx 
    if "%%a"=="logo_0 1" set write=yyyyy 
    if "%%a"=="%FIND_LOGO_1_DATA%" set write=logo_0 1 
    if "%%a"=="%FIND_LOGO_2_DATA%" set write=logo_1 1 
    if "%%a"=="%FIND_LOGO_3_DATA%" set write=logo_2 1 
    if "%%a"=="%FIND_LOGO_4_DATA%" set write=logo_3 1 
    if "%%a"=="%FIND_LOGO_5_DATA%" set write=logo_4 1 
    if "%%a"=="%FIND_LOGO_6_DATA%" set write=logo_5 1 
    if "%%a"=="%FIND_LOGO_7_DATA%" set write=logo_6 1 
    if "%%a"=="%FIND_LOGO_8_DATA%" set write=logo_7 1 
    if "%%a"=="%FIND_LOGO_9_DATA%" set write=logo_8 1 
    if "%%a"=="%FIND_LOGO_10_DATA%" set write=logo_9 1 


    (echo !write!)>>%~n1.bugs%~x1 
) 

Répondre

1

Si je vois correctement, alors vous voulez juste sortir une ligne blanche dans les deux cas où vous avez actuellement xxxxx et yyyyy, non?

Si c'est le cas, alors c'est vraiment très facile. Il vous suffit de mettre write à rien:

set write= 

et modifier la ligne où vous echo cette variable de la manière suivante:

echo.!write! 

Cela entraînera écho à la sortie d'une ligne vide si write est vide et supprimer le "ECHO est éteint". message (également documenté here).

+0

Excellent. Merci beaucoup. –