2012-11-21 142 views
1

我創建了一個.cmd文件,該文件以文件名作爲參數,然後它要求字符串查找,然後字符串進行替換。在.txt文件中使用.cmd文件查找並替換

所需出來把

findthis應該從replacewith給定的文件被替換,但它不工作

以下是我已經嘗試代碼..

@echo off 
setlocal enabledelayedexpansion 

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

set /p findthis=find this text string: 
set /p replacewith=and replace it with this: 


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

    set write=%%a 
    if %%a==%findthis% set write=%replacewith% 

    echo !write! 
    echo !write! >>%~n1.replaced%~x1 
) 

感謝

回答

0

我已經修復了代碼中的一些簡單的錯誤。您應該將字符串放在引號中,因爲它們很可能包含空格。有時他們可能是一個空字符串,導致回聲問題,所以我添加了一個「;」回聲處理:

@echo off 
setlocal enabledelayedexpansion 

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

set /p findthis=find this text string: 
set /p replacewith=and replace it with this: 


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

    set write=%%a 
    if "%%a"=="%findthis%" set write=%replacewith% 

    echo;!write! 
    echo;!write! >>%~n1.replaced%~x1 
) 

但是,這隻能匹配和替換整行,而不是行內的文本字符串。要替換一個子行內,你必須使用可變字符串替換語法(這是引用多次的問題:here最後here

後者的答案包含您需要解決您的原始問題的一切

相關問題