gpt4 book ai didi

windows - 在文本文件中查找和替换字符串

转载 作者:可可西里 更新时间:2023-11-01 10:33:39 25 4
gpt4 key购买 nike

我必须使用 Windows 命令/批处理脚本替换文本文件 (InputFile.txt) 中的字符串。我找到了以下脚本 (replace.cmd),但它没有给我准确的结果。

InputFile.txt:

1111 aaaa
2222 bbbb
$cc = 3333

我用来将 $cc = 3333 替换为 cc = 4444 的批处理脚本 (replace.cmd) 是:

@echo OFF 
setlocal enabledelayedexpansion

set "search=$cc = 3333"
set "replace=cc = 4444"
set "textfile=InputFile.txt"
set "newfile=OutputFile.txt"
(for /f "delims=" %%i in (%textfile%) do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
echo(!line!
endlocal
))>"%newfile%"

运行代码后得到的输出是:

1111 aaaa
2222 bbbb
3333=cc = 4444= 3333

应该是这样的:

1111 aaaa
2222 bbbb
cc = 4444

最佳答案

如果你想要像这样的 vbscript 的小技巧:

@echo off
set "Data=some data .... $cc = 3333"
echo The data before replacing is "%Data%" & pause
set "String1=$cc = 3333"
set "String2=cc = 4444"
Call :ReplaceString "%Data%" "%String1%" "%String2%"
echo The data after replacing is "%Data%" & pause & exit
::*************************************************************************************
:ReplaceString <Data> <String1> <String2>
(
echo Wscript.echo Replace("%~1","%~2","%~3"^)
)>"%tmp%\%~n0.vbs"
for /f "delims=" %%a in ('Cscript /nologo "%tmp%\%~n0.vbs"') do ( set "Data=%%a" )
If Exist "%tmp%\%~n0.vbs" Del "%tmp%\%~n0.vbs"
exit /b
::*************************************************************************************

编辑:2016 年 9 月 15 日 @ 19:30

@echo off
Set "InputFile=%~dp0InputFile.txt"
Set "OutputFile=%~dp0OutputFile.txt"
set "String1=$cc = 3333"
set "String2=cc = 4444"
if exist "%OutputFile%" Del "%OutputFile%"
Setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('Type "%InputFile%"') do (
If /I "%%i" == "%String1%" (
Call :ReplaceString "%%i" "%String1%" "%String2%"
echo !Data!
) else (
echo %%i
)
)>> "%OutputFile%"
start "" "%OutputFile%" & exit
::*************************************************************************************
:ReplaceString <Data> <String1> <String2>
(
echo Wscript.echo Replace("%~1","%~2","%~3"^)
)>"%tmp%\%~n0.vbs"
for /f "delims=" %%a in ('Cscript /nologo "%tmp%\%~n0.vbs"') do ( set "Data=%%a" )
If Exist "%tmp%\%~n0.vbs" Del "%tmp%\%~n0.vbs"
exit /b
::*************************************************************************************

关于windows - 在文本文件中查找和替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39513403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com