2013-05-15 76 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

相关问题