2009-08-13 2 views
0

배치 파일 내에서 검색하고 바꿀 작은 배치 파일이 있습니다. 일을 제거하는 데 어려움이 있습니다 (예 : 일부 텍스트를 null 값으로 바꾸기). 그것은 간단하지만 검색하여 아무것도 찾을 수 없습니다 확신합니다!Windows 일괄 검색 및 바꾸기 질문

이 파일입니다 :

당신이 xxxxx는보고 나는 빈 필요로하는 곳에 YYYYY가

!

건배. 나는이 상황을 제대로보고 있어요 경우

@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 
) 

답변

1

는, 당신은 바로, 출력 현재 xxxxxyyyyy이 두 경우에 빈 줄을 줄까?

그런 경우 실제로 매우 쉽습니다. write이 비어있는 경우

echo.!write! 

이 출력에 에코 빈 줄의 원인이됩니다 : 당신이 echo 다음과 같은 방법으로 그 변수가 어디에

set write= 

과 라인을 변경 : 당신은 아무것도 write을 설정해야 "에코 꺼짐"을 억제하십시오. 메시지 (또한 here에 설명되어 있음).

+0

우수. 정말 고마워. –