gpt4 book ai didi

string - 用于读取文件并用新字符串替换字符串的批处理文件

转载 作者:行者123 更新时间:2023-12-01 16:04:45 26 4
gpt4 key购买 nike

我想创建一个批处理文件来循环读取文件的每一行并将一个字符串替换为另一个字符串。以下是我的代码片段:

for /F "tokens=*" %%i in (myfile) do (
set str=%%i
set str=%str: %oldstring% = %newstring%%
echo %str% >> newfile
)

这会生成一个新文件,其中“Echo is off”的行数与 myfile 中的行数一样多。似乎 str 变量在分配给 %%i 时根本没有任何值。有人可以帮助我吗?

最佳答案

试试这个小脚本:

@echo off
set val=50
echo %val%
for /l %%i in (1,1,1) do (
set val=%%i
echo %val%
)
echo %val%
pause>nul

输出是:

50
50
1

不是您所期望的,对吧?

那是因为在 for 循环中,变量直到循环结束才更新。为了解决这个问题,您可以使用 setlocal enabledelayedexpansion,并将百分号 (%) 替换为感叹号 (!):

@echo off
setlocal enabledelayedexpansion
set val=50
echo %val%
for /l %%i in (1,1,1,) do (
set val=%%i
echo !val!
)
echo %val%
pause>nul

输出:

50
1
1

str 变量没有值的原因(在 for 循环期间)是因为它没有事先设置。

因此,通过这些快速修改,您的脚本将正常工作...

setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (myfile) do (
set str=%%i
set str=!str: %oldstring% = %newstring%!
echo !str! >> newfile
)

顺便说一下,这段代码假设 oldstringnewstring 不会在 forloop 中设置,否则事情会变得一团糟。

玩得开心。

关于string - 用于读取文件并用新字符串替换字符串的批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291341/

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