Batch file 查找和替换不在批处理脚本中工作
我试图用find和replace选项创建一个批处理脚本,但是批处理脚本没有做任何事情,只是显示闪烁的光标,然后被卡住了 以下是我使用的编码: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:*:=!"
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