2013-05-15 72 views
0

我正在嘗試使用查找和替換選項創建批處理腳本,但批處理腳本不會執行任何操作,而只是顯示閃爍的光標並卡在那裏。查找並替換批處理腳本中不工作

下面是我使用的編碼:

setlocal 
set this=abhinav2 

for /f "delims=" %%i in ('^<test\abc.new findstr /n "^"') do (' 
    set "line=%%i" 
    setlocal enabledelayedexpansion 
    set "line=!line:*:=!" 
    if not "!line!"=="!line:<xyz>mnishamk<abc>" set "line=<xyz>%this%<abc>" 
    (echo(!line!)>>test\new.abc 
    endlocal 
) 
) 

我不能簡單地用abhinav2取代mnishamk因爲有很多的名字與mnishamk存在的文件中。

回答

0

你有一個語法問題,請參閱set /?求救,試試這個:

@echo off&setlocal enabledelayedexpansion 
set "line=<xyz>mnishamk<abc>" 
set "this=abhinav2" 

if not "!line!"=="!line:<xyz>mnishamk<abc>=!" set "line=<xyz>%this%<abc>" 
echo !line! 

輸出爲:

<xyz>abhinav2<abc> 

而且這也適用:

set "line=!line:<xyz>mnishamk<abc>=<xyz>%this%<abc>!" 
+0

它說: abhinav2 系統找不到指定的文件。順便提一下,我想在一個名爲test的文件夾中編輯abc.new文件。 '我真的很抱歉,但我是一批新手。 – user134998

+0

請看[這裏](http://pastebin.com/YZcEGCLw)。 – Endoro

+0

它被卡住了....閃爍的光標在那裏,但沒有任何反應。 :( – user134998

0
@ECHO off 
setlocal 
DEL \test\new.abc /F /Q 
set this=abhinav2 

for /f "delims=" %%i in ('^<\test\abc.new findstr /n "^"') do (
    set "line=%%i" 
    setlocal enabledelayedexpansion 
    set "line=!line:*:=!" 
    if not "!line!"=="!line:<xyz>mnishamk<abc>=!" set "line=!line:<xyz>mnishamk<abc>=<xyz>%this%<abc>!" 
    echo(!line!>>\test\new.abc 
    endlocal 
) 

FC \test\abc.new \test\new.abc 

這對我有效...

+0

它說系統無法找到指定的文件:( – user134998

+0

嘗試更改'\ test'到'test',你指定的文件位置是相對於你當前的目錄;如果你離開你當前的目錄,'test \ new.abc'將會是沒有意義的,我只是使用完全定義的或者「絕對的「路徑 – Magoo

+0

還沒什麼:'( – user134998

相關問題