如何用批处理对指定行的内容进行编辑(写入修改)
比如我有一个文本111111111111122222222222223333333333333我的目标写一个批处理运行他则实现把第2行的2222222222222改成he...
比如我有一个文本
1111111111111
2222222222222
3333333333333
我的目标写一个批处理
运行他则实现
把第2行的2222222222222改成hello
也就是变成
1111111111111
hello
3333333333333
不要提示用户输入内容,而是批处理直接运行就直接改成hello
不要用find命令,因为的第二行的内容会不同,我要不管第二行什么内容,都能彻底改掉第二行为我脚本里面写入的内容
感谢朋友的回答,我自己也折腾了一个方法,复杂了点,但可以具体到第几行从第几个字符开始写入,和大家分享一下
@echo off&echo/
set ff=1.txt
set ln=40
set cl=1
set s=new
setlocal enabledelayedexpansion
(for /f "tokens=1* delims=:" %%i in ('type "%ff%"^|findstr/n ".*"'
)do if %%i neq %ln% (echo.%%j)else (set mh="%%j"
set mh=!mh: =" "!
for %%k in (!mh!)do (set/a n+=1
if !n! equ %cl% (set h=!h! %s%)else set "h=!h! %%~k")
echo.!h:~1!))>temp.yky
move temp.yky "%ff%"&echo 处理完成&ping -n 2 127.1>nul
==============
set ln=40 意思是第40行
set cl=1 意思是第一个字符开始
set s=hello 此处为要写入的hello 展开
1111111111111
2222222222222
3333333333333
我的目标写一个批处理
运行他则实现
把第2行的2222222222222改成hello
也就是变成
1111111111111
hello
3333333333333
不要提示用户输入内容,而是批处理直接运行就直接改成hello
不要用find命令,因为的第二行的内容会不同,我要不管第二行什么内容,都能彻底改掉第二行为我脚本里面写入的内容
感谢朋友的回答,我自己也折腾了一个方法,复杂了点,但可以具体到第几行从第几个字符开始写入,和大家分享一下
@echo off&echo/
set ff=1.txt
set ln=40
set cl=1
set s=new
setlocal enabledelayedexpansion
(for /f "tokens=1* delims=:" %%i in ('type "%ff%"^|findstr/n ".*"'
)do if %%i neq %ln% (echo.%%j)else (set mh="%%j"
set mh=!mh: =" "!
for %%k in (!mh!)do (set/a n+=1
if !n! equ %cl% (set h=!h! %s%)else set "h=!h! %%~k")
echo.!h:~1!))>temp.yky
move temp.yky "%ff%"&echo 处理完成&ping -n 2 127.1>nul
==============
set ln=40 意思是第40行
set cl=1 意思是第一个字符开始
set s=hello 此处为要写入的hello 展开
4个回答
展开全部
方法多种多样,这里列举几种简单的方式:
1。打开记事本,输入好批处理代码,点击“文件”,“另存为”,选好位置后在“文件名(N)”框里输入 "批处理文件名.bat" 或 "批处理文件名.cmd" ,注意包括引号在内,这里的引号为半角引号,也就是没开输入法情况下打出的引号。 “批处理文件名”几个字替换成你想要的文件名,bat或cmd是批处理的文件格式后辍。
2。点击左下角“开始”,选择点击“运行”,然后输入
notepad c:\batch.cmd
回车,其中c:\batch.cmd替换成你想要的路径及文件名,当记事本打开时会提示你文件不存在,是否创建,选择是。 然后再输入批处理代码并保存
3。打开MS-DOS(开始,运行,cmd回车;或开始,所有程序,附件,命令提示符), 在命令提示符下打命令
copy con c:\batch.cmd
回车后直接输入批处理代码,当输入完毕后按ctrl+z(先按住ctrl键不松再按一下z键后都松开),回车后这个文件即创建好并已经填充好代码了。
4。此方法需要“文件夹选项”(在资源管理器“文件”菜单里)“查看”标签下的“隐藏已知文件类型的扩展名”前的勾去掉。在需要的位置直接右键,新建,文本文档。 然后打开此文档输入好代码保存退出,然后直接更改此文件为你需要的文件名加.cmd或.bat
1。打开记事本,输入好批处理代码,点击“文件”,“另存为”,选好位置后在“文件名(N)”框里输入 "批处理文件名.bat" 或 "批处理文件名.cmd" ,注意包括引号在内,这里的引号为半角引号,也就是没开输入法情况下打出的引号。 “批处理文件名”几个字替换成你想要的文件名,bat或cmd是批处理的文件格式后辍。
2。点击左下角“开始”,选择点击“运行”,然后输入
notepad c:\batch.cmd
回车,其中c:\batch.cmd替换成你想要的路径及文件名,当记事本打开时会提示你文件不存在,是否创建,选择是。 然后再输入批处理代码并保存
3。打开MS-DOS(开始,运行,cmd回车;或开始,所有程序,附件,命令提示符), 在命令提示符下打命令
copy con c:\batch.cmd
回车后直接输入批处理代码,当输入完毕后按ctrl+z(先按住ctrl键不松再按一下z键后都松开),回车后这个文件即创建好并已经填充好代码了。
4。此方法需要“文件夹选项”(在资源管理器“文件”菜单里)“查看”标签下的“隐藏已知文件类型的扩展名”前的勾去掉。在需要的位置直接右键,新建,文本文档。 然后打开此文档输入好代码保存退出,然后直接更改此文件为你需要的文件名加.cmd或.bat
展开全部
@echo off
(for /f "tokens=1* delims=:" %%a in ('findstr /n "test.txt"') do (
if %%a equ 2 (echo hello) else (echo.%%b)
))>$
move $ "test.txt"
将test.txt第二行改为hello
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off&setlocal enabledelayedexpansion&(if exist "tmp" cd.>"tmp")&(for /f "delims=" %%1 in (1.txt)do (set/aadd+=1&if !add!==2 (echo hello)else echo %%1))>"tmp"&move "tmp" "1.txt"
// 尽量不要用外部文件,大文件读取会比较慢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-21
展开全部
答得好! 问到莫明其妙的最适当的答案。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询