Batch file 查找和替换不在批处理脚本中工作

Batch file 查找和替换不在批处理脚本中工作,batch-file,Batch File,我试图用find和replace选项创建一个批处理脚本,但是批处理脚本没有做任何事情,只是显示闪烁的光标,然后被卡住了 以下是我使用的编码: setlocal set this=abhinav2 for /f "delims=" %%i in ('^<test\abc.new findstr /n "^"') do (' set "line=%%i" setlocal enabledelayedexpansion set "line=!line:*:=!"

我试图用find和replace选项创建一个批处理脚本,但是批处理脚本没有做任何事情,只是显示闪烁的光标,然后被卡住了

以下是我使用的编码:

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
)
)
setlocal
将此设置为abhinav2
对于/f“delims=“%%i in('^>test\new.abc
端部
)
)

我不能简单地将
mnishamk
替换为
abhinav2
,因为文件中存在许多名
mnishamk

如果出现语法问题,请参阅
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!
@echo off&setlocal enabledelayedexpansion
设置“line=mnishamk”
设置“this=abhinav2”
如果不是“!line!”==”!line:mnishamk=!“设置”line=%this%”
回声!排队!
输出为:

<xyz>abhinav2<abc>
abhinav2
这也适用于:

set "line=!line:<xyz>mnishamk<abc>=<xyz>%this%<abc>!"
set“line=!line:mnishamk=%this%”
@ECHO off
setlocal
DEL\test\new.abc/F/Q
将此设置为abhinav2

对于(^中的/f“delims=“%%i,它表示:abhinav2系统找不到指定的文件。顺便说一句,我要编辑的文件是名为test的文件夹中的abc.new。`非常抱歉,我是批处理的新手。
abc.new
文件的最后一行必须以
CR/LF
结尾,否则批处理会找到砖!是的,但仍然:(因此使用
find
,而不是
findstr
。现在只需打开和关闭:(它表示系统无法找到指定的文件):(请尝试将整个
\test
更改为
test
。您指定的文件位置是相对于当前目录的;如果您离开当前目录,
test\new。abc
将毫无意义。我只使用了完全定义的或“绝对”路径。
@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