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

我不能简单地替换mnishamk为,因为文件abhinav2中有很多名称mnishamk

4

2 回答 2

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

这对我有用...

于 2013-05-15T08:10:55.347 回答
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>!"
于 2013-05-15T05:25:47.783 回答