Batch file 查找并替换字符串,并使用批处理脚本覆盖同一文件

Batch file 查找并替换字符串,并使用批处理脚本覆盖同一文件,batch-file,Batch File,我对脚本非常陌生,我正在寻找一些善良的灵魂来帮助我 我想将名为Version.dll的文件中的内容(“8888”替换为“9999”)。我还想在脚本运行后保存在相同的文件名中。它不起作用 我不得不创建一个新的文件“Version1.dll”来让它工作,但这不是我想要的 在我运行脚本后,是否有人可以指导我在同一个现有文件(Version.dll)中进行覆盖?多谢各位 @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET "filename1=%C:\Users

我对脚本非常陌生,我正在寻找一些善良的灵魂来帮助我

我想将名为Version.dll的文件中的内容(“8888”替换为“9999”)。我还想在脚本运行后保存在相同的文件名中。它不起作用

我不得不创建一个新的文件“Version1.dll”来让它工作,但这不是我想要的

在我运行脚本后,是否有人可以指导我在同一个现有文件(Version.dll)中进行覆盖?多谢各位

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "filename1=%C:\Users\XXX\Desktop\Version.dll"
SET "outfile=%C:\Users\XXX\Desktop\Version1.dll"
(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
SET "line=%%a"
SET "line=!line:8888=9999!"
ECHO !line!
)>"%outfile%"

GOTO :EOF`

move/Y“%outfile%”“%filename1%”
使用临时文件并将其移到原始文件上(正如Aacini所建议的那样)是性能方面最好的方法。或者,您可以这样做以避免临时文件:
for/F“delims=“%%a in('type”%filename1%“^&^>%filename1%“break”)do(set“line=%%a”&set“line=!line:8888=9999!”&>%filename1%“echo!line!)