问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

批处理更改文本文档的内容

发布网友 发布时间:2022-04-21 21:18

我来回答

5个回答

热心网友 时间:2023-07-01 20:27

可以使用批处理中的for命令和if命令配合完成这个任务。具体的步骤如下:
@echo off
setlocal enabledelayedexpansion
set target="d:\tt\*.tog"
set pattern1=4
set content1=7701
set pattern2=-6
set content2=9912
for /r %target% %%a in (*) do (
set count=0
for /f "delims=" %%b in (%%a) do (
set /a count+=1
if !count!==%pattern1% (

echo %content1%>>temp.txt
) else if !count!==%pattern2% (

echo %content2%>>temp.txt

) else (

echo %%b>>temp.txt

)

)

move /y temp.txt "%%~dpa%%~na.tog" >nul
)
其中,%target%代表需要批量修改的目标文件,%pattern1%和%pattern2%分别代表第四行和倒数第六行及其后面的内容需要修改,%content1%和%content2%分别代表将要替换的内容。
代码使用了两个循环:第一个for循环用于遍历目标目录下所有的.tog文件;第二个for循环用于遍历每个文件的所有行,并在需要修改的行进行相应的操作。通过变量count计数,如果当前行是需要修改的行,则输出新的内容到一个临时文件temp.txt中;否则直接将当前行原样输出。最后将临时文件重命名为原文件名,完成修改。
请注意,这个代码可能会将原文件名中的大写字母全部转换为小写字母。如果需要保留原文件名的大小写,可以修改move命令为:
move /y temp.txt "%%~dpa%%~na%%~xa" >nul追问运行过程一闪而过,对象文件没有被修改。

热心网友 时间:2023-07-01 20:27

@echo off
setlocal

:: 定义修改前后的文本
set beforeText=第4行内容
set afterText=7701
set endText=倒数第6行
set lastText=9912

:: 设置当前目录
set "dir=d:\tt"

:: 处理每个 .tog 文件
for %%f in ("%dir%\*.tog") do (
echo 处理文件 "%%~f"...

:: 使用 findstr 命令查找指定文本所在行
:: 并使用 for /f 命令遍历结果
for /f "tokens=1* delims=:" %%a in ('findstr /n /i "%beforeText%" "%%~f"') do (
set line=%%a
set text=%%b
:: 如果找到了指定文本所在行,使用 sed 命令替换该行内容
if !line! equ 4 (
sed -i "%%~f" "!line!s/^.*$/!afterText!/"
)
)

:: 使用 type 命令查询文件总行数
for /f %%a in ('type "%%~f" ^| find /c /v ""') do set line_count=%%a

:: 使用 findstr 命令查找倒数第 6 行所在行
:: 并使用 for /f 命令遍历结果
for /f "tokens=1* delims=:" %%a in ('type "%%~f" ^| findstr /n $ ^| findstr /r /c:"^.*:%endText%$"') do (
set /a last_line_count=!line_count!+1-%%a
:: 如果找到了倒数第 6 行,使用 sed 命令替换该行内容
if !last_line_count! equ 6 (
sed -i "%%~f" "!last_line_count!s/^.*$/!lastText!/"
)
)
)

echo 修改完成
pause追问对象文件未被修改。

热心网友 时间:2023-07-01 20:28

可以使用bat批处理来修改文本文档中指定行的内容。下面是一个简单的示例:
```bat
@echo off
setlocal enabledelayedexpansion
set "file=test.txt"
set "line_number=3"
set "new_value=New Value"
set "counter=0"
for /f "tokens=* delims=" %%a in (%file%) do (
set /a "counter+=1"
if !counter! equ %line_number% (
echo %new_value%>>tempfile.txt
) else (
echo %%a>>tempfile.txt
)
)
move /y tempfile.txt %file%
```
这段代码将test.txt文件的第3行内容修改为"New Value"。可以将上述代码保存为bat文件并在cmd命令行中执行。
具体来说,这段代码:
1. 使用set命令设置需要修改的文件名、行号和新值。
2. 使用for /f循环读取文件中的每一行,并使用counter计数器来确定当前处理的行号。
3. 如果当前处理的行号等于指定的行号,则输出新值到临时文件tempfile.txt中;否则将原来的行内容输出到临时文件中。
4. 最后,将临时文件tempfile.txt重命名为原始文件test.txt。
可能需要注意的一些事项:
1. 在循环中使用了"!counter!"而不是"%counter%",这是因为需要启用延迟扩展。这是因为循环中对counter变量进行了修改,必须将其扩展为当前值而不是循环开始时的初始值。
2. 可以将new_value设置为变量,以便从动态值进行修改。
3. 如果文件中的行号少于指定的行号,则该代码不会更改文件。可以添加额外的处理或检查以处理此情况。
4. 这种方法可以用于修改简单的文本文件,但对于更复杂的格式,例如CSV或XML文件,需要使用适当的工具和库来进行处理。
有关更多信息和bat批处理的知识扩展,请参阅以下链接:
- Windows批处理教程:https://www.tutorialspoint.com/batch_script/index.htm
- Windows命令行参考:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands
- 了解Windows命令提示符(CMD):https://www.howtogeek.com/235101/10-ways-to-open-the-command-prompt-in-windows-10/
- 批处理文件中的变量和运算符:https://www.robvanderwoude.com/variableexpansion.php
- DOS命令使用FOR的各种用法:https://www.csie.ntu.e.tw/~r92092/ref/dosCmd/for.html追问窗口一闪而过,对象文件未被修改。

热心网友 时间:2023-07-01 20:28

可以使用以下BAT脚本来批量修改文本文档指定行的内容:

bat
@echo off
setlocal enabledelayedexpansion

set dir=d:\tt
set suffix=tog

for %%i in (%dir%\*.%suffix%) do (
set "file=%%i"
echo %file%
set line4=
set line6=

for /f "delims=" %%j in ('findstr /n /c:"第4行内容" %file%') do (
set line4=%%j
)
for /f "delims=" %%k in ('findstr /n /c:"倒数第6行" %file% ^| findstr /v /r ^[^0-9]*$') do (
set line6=%%k
)

set "newline4=7701"
set "newline6=9912"

(echo.^&echo.^&echo.^&echo.)>"%file%"
for /f "tokens=1 delims==" %%a in ('type "%file%"') do (
if !line4!==%%a (
echo !newline4!>>"%file%"
) else if !line6!==%%a (
echo !newline6!>>"%file%"
) else (
echo %%a>>"%file%"
)
)
)

这段BAT脚本会:

获取指定目录d:\tt下所有tog后缀的文件的路径

读取每个文件,获取"第4行内容"和"倒数第6行"的行号

定义新内容newline4和newline6

重写每个文件,如果行号匹配line4,则写入newline4,如果匹配line6,写入newline6,其余行不变

这样就实现了批量修改文本文档指定行的内容

使用这个BAT脚本就可以很方便的修改多个文本文件指定行的内容。有任何问题可以问我。

追问对象文件未被修改。
窗口出现 echo处于关闭状态,不再有任何运行。

热心网友 时间:2023-07-01 20:29

@echo off
setlocal EnableDelayedExpansion

set S_DIR=d:\tt
set str=7701
set end_str=9912

for /r "%S_DIR%" %%f in (*.tog) do (
set "cnt=0"
set "tmp_file=%%~nf.tmp"
if exist "!tmp_file!" del /q "!tmp_file!"
for /f "tokens=*" %%a in (%%f) do (
set /a cnt+=1
if !cnt! equ 4 (
echo !str! >>"!tmp_file!"
) else if !cnt! equ !end_num! (
echo !end_str! >>"!tmp_file!"
) else (
echo %%a >>"!tmp_file!"
)
)
move /y "!tmp_file!" "%%f" >nul
)
echo Done!
pause>nul

在这个脚本中,我们首先设置了需要处理的目录路径和需要替换的字符串。然后,通过递归遍历目录下所有的 .tog 文件,针对每个文件,我们逐行读取文件内容,并在指定的行添加目标字符串,之后将修改后的文件保存回原文件路径中。最后显示“完成!”并暂停脚本的运行。
这个脚本可以实现指定行修改操作。需要注意的是,如果原文本文档中第 4 行和倒数第 6 行之间的行数是不确定的,那么需要先手动数出要修改的行数,再进行修改。追问两个修改对象之间的行数是不确定的,所以我才用顺数和倒数的形式来定义,那能不能用这种方式,先将全部文件的顺数内容修改,再去修改倒数的,分两次执行,或是2个批处理。
【测试结果】无法满足需要的结果,且修改后的文件每一行最后会有一个空格。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...了我亲弟弟的女朋友了 她也喜欢我 我该怎么办 他们已经分手了... ...个朋友的老婆你说我该追她吗 他们现在已经分手了 月经第三天有大量血块排出是什么原因 如何关闭360推荐的广告学习关闭360推荐广告 手机浏览器的不雅广告怎么清除 怎样设置浏览器推送内容 学政治对考公务员有优势吗 公务员必须选政治吗 如何提高苹果手机的下载速度 苹果手表有必要买蜂窝版吗苹果手表有必要买蜂窝版吗 我在我来贷借8000,分12期,每月要还902.6元如果... 想把LED电子屏字幕弄成满屏显示怎么弄? 怎么用批处理查找文件并修改其中的字符 批处理 替换中间的字 想要贷点款,我来贷的一般额度是多少 笔记本电脑屏幕不能全屏显示 我来贷有人在用吗? LED显示屏如何全屏显示电脑上的内容? 如何用批处理对指定行的内容进行编辑(写入修改) 我来贷最能能贷多少笔 应用全屏显示什么意思 我来贷怎么贷款? 电脑外接屏全屏显示? Windows环境中,使用批处理修改特定文件名中的特定... 以前经常用我来贷,我来贷怎么不见了? 电脑小白谁帮我写个批处理~要求替换一段文字中的部... 我来贷怎么样,容易操作吗? 改掉文件名中的一些字的批处理。 led电子屏如何全屏 我来贷会在贷款前收取费用吗? 我来贷上征信吗 怎样让电子表格在显示屏全屏显示 我来贷为什么更名为我来数科? 改变批处理中部分字体的颜色 我来贷里面的淘新机靠谱吗 谁用过 批处理如何实现文本文件中指定行内容的替换? 上海我来贷公司是骗子吗? 再保险合同的基本内容,再保险合同的条款有哪些 保险合同分为什么合同和再保险合同 再保险合同需要交印花税吗? 再保险合同是什么意思 再保险合同中,分保接受人直接对原保险合同项下的物... 再保险合同有哪些性质 再保险合同的独立性质 在再保险业务中分保合同 简述再保险合同与原保险合同的联系和区别 再保险的合同形式有那些? 再保险合同的分保费收入属于什么收入,其确认条件与... 在再保险业务中分保合同双方 签订的再保险合同,都要交印花税吗