批处理文本内容。 我想批量处理TXT文本的内容,功能是删除每个文本的其中一行的行首的前几个字或者行尾的
比如这个,我想去除第七行最后的3个字节38秒或者是第七行的行首开始的几个字节。就是哪一行的前几个字节或是哪一行的后几个字节...
比如这个,我想去除第七行最后的3个字节 38秒 或者是第七行的行首开始的几个字节。就是哪一行的前几个字节或是哪一行的后几个字节
展开
4个回答
展开全部
=========================CUT==================================
@echo off&setlocal enabledelayedexpansion
title 删除某行前面或者后面几个字节
::先得出共有多少行
set /a num_max=0
for /f "delims=" %%a in (廉政英雄.txt) do (
set /a num_max+=1
)
:shuruhang
echo.输入要删除行:
set /p num_hang=
if !num_hang! LEQ !num_max! goto :yesorno
echo.输入有误!重新输入&ping -n 2 127.1>nul&goto :shuruhang
:yesorno
::用Del_=1或者2来识别删除前面字节或者后面字节
set/a Del_=0
echo.删除前面字节输入Y,后面字节输入N?
set/p input=
if "!input!"=="Y" set/a Del_=1&goto :function1
if "!input!"=="N" set/a Del_=2&goto :function1
echo.输入错误&ping -n 3 127.1>nul&goto :yesorno
::这个输入删除字节数
:function1
echo.请输入删除字节数:
set/p num_bit=
if "!num_bit!" gtr "0" goto :function2
echo.输入有误!&ping -n 2 127.1>nul&goto :function1
::对文本进行操作
:function2
set/a num_temp=0
for /f "delims=" %%a in (廉政英雄.txt) do (
set/a num_temp+=1
set str_temp=%%a
if "!num_temp!" equ "!num_hang!" (
if "!input!"=="Y" (
echo !str_temp:~%num_bit%!>>temp.txt) else (
echo !str_temp:~0,-%num_bit%!>>temp.txt)
) else (
echo !str_temp!>>temp.txt
)
)
echo.亲,处理完毕。&""temp.txt""
==========================CUT=================================
我测试成功!祝你好运。
如果对你有帮助,请采纳!
@echo off&setlocal enabledelayedexpansion
title 删除某行前面或者后面几个字节
::先得出共有多少行
set /a num_max=0
for /f "delims=" %%a in (廉政英雄.txt) do (
set /a num_max+=1
)
:shuruhang
echo.输入要删除行:
set /p num_hang=
if !num_hang! LEQ !num_max! goto :yesorno
echo.输入有误!重新输入&ping -n 2 127.1>nul&goto :shuruhang
:yesorno
::用Del_=1或者2来识别删除前面字节或者后面字节
set/a Del_=0
echo.删除前面字节输入Y,后面字节输入N?
set/p input=
if "!input!"=="Y" set/a Del_=1&goto :function1
if "!input!"=="N" set/a Del_=2&goto :function1
echo.输入错误&ping -n 3 127.1>nul&goto :yesorno
::这个输入删除字节数
:function1
echo.请输入删除字节数:
set/p num_bit=
if "!num_bit!" gtr "0" goto :function2
echo.输入有误!&ping -n 2 127.1>nul&goto :function1
::对文本进行操作
:function2
set/a num_temp=0
for /f "delims=" %%a in (廉政英雄.txt) do (
set/a num_temp+=1
set str_temp=%%a
if "!num_temp!" equ "!num_hang!" (
if "!input!"=="Y" (
echo !str_temp:~%num_bit%!>>temp.txt) else (
echo !str_temp:~0,-%num_bit%!>>temp.txt)
) else (
echo !str_temp!>>temp.txt
)
)
echo.亲,处理完毕。&""temp.txt""
==========================CUT=================================
我测试成功!祝你好运。
如果对你有帮助,请采纳!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
::下一行指定行数 hn 和删除几字符 sn 如删行尾写成负数
set/a hn=7,sn=3
if %sn% lss 0 set "sn=,%sn%"
for %%i in (*.txt)do (
echo %%i
(for /f "tokens=1* delims=:" %%j in ('findstr/n .* "%%i"')do (
if %%j equ %hn% (
set "h=%%k"
if defined h (
setlocal enabledelayedexpansion
set "h=!h:~%sn%!"
echo/!h!
endlocal)else echo/
)else echo/%%k
))>temp.yky
move temp.yky "%%i"
set/a n+=1)
echo 共处理 %n% 个文件
pause
::下一行指定行数 hn 和删除几字符 sn 如删行尾写成负数
set/a hn=7,sn=3
if %sn% lss 0 set "sn=,%sn%"
for %%i in (*.txt)do (
echo %%i
(for /f "tokens=1* delims=:" %%j in ('findstr/n .* "%%i"')do (
if %%j equ %hn% (
set "h=%%k"
if defined h (
setlocal enabledelayedexpansion
set "h=!h:~%sn%!"
echo/!h!
endlocal)else echo/
)else echo/%%k
))>temp.yky
move temp.yky "%%i"
set/a n+=1)
echo 共处理 %n% 个文件
pause
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下边代码有注释,你在把代码保存成bat文件的时候要把注释去掉,批处理文件要和 文本文件放在同一目录下
set /a n=7 第七行,这个数字你自己改
set /a m=0
cd.>temp.txt
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%a in ("廉政英雄.txt") do (
set /a m=!m!+1
if "!m!"== "!n!" (
set str=%%a
set str=!str:~0,-3! "-3"表示要去掉倒数3个字,你自己改
要去掉前边3个字 就用 set str=!str:~3!
echo !str!>>temp.txt
) else (
echo %%a>>temp.txt
)
)
endlocal
del 廉政英雄.txt /f/q
ren temp.txt 廉政英雄.txt
set /a n=7 第七行,这个数字你自己改
set /a m=0
cd.>temp.txt
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%a in ("廉政英雄.txt") do (
set /a m=!m!+1
if "!m!"== "!n!" (
set str=%%a
set str=!str:~0,-3! "-3"表示要去掉倒数3个字,你自己改
要去掉前边3个字 就用 set str=!str:~3!
echo !str!>>temp.txt
) else (
echo %%a>>temp.txt
)
)
endlocal
del 廉政英雄.txt /f/q
ren temp.txt 廉政英雄.txt
更多追问追答
追问
代码里怎么有廉政英雄.txt 我需要批量处理很多文件。就是一个文件夹下有很多像廉政英雄这样的TXT。现在这个代码可以吗?给我发个文件到邮箱里吧1035893804@qq.com
追答
用下边的批处理就可以了,放在你的 txt 文件所在文件夹下,你在把代码保存成bat文件的时候要把注释去掉
for /f "token* delims=" %%n in ('dir /b *.txt') do (
set /a n=7 第七行,这个数字你自己改
set /a m=0
cd.>temp.txt
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%a in ("%%n") do (
set /a m=!m!+1
if "!m!"== "!n!" (
set str=%%a
set str=!str:~0,-3! "-3"表示要去掉倒数3个字,你自己改
要去掉前边3个字 就用 set str=!str:~3!
echo !str!>>temp.txt
) else (
echo %%a>>temp.txt
)
)
endlocal
del "%%n" /f/q
ren temp.txt "%%n"
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用软件Replace Pioneer可以很容易完成,详细步骤:
单文件测试:
1. ctrl-o打开文本文件
2. ctrl-h打开replace窗口
* replace unit选Line
* unit number filter输入7表示第7行
* replace with pattern输入chars($match,1,-4)\n表示保留该行第1到倒数第4个字符(即删除最后3个字符)
3. 点击replace完成。
单文件测试成功后,可以进行多文件批量处理:
4. 在以上第3步,点击batch...按钮
5. 把多个待处理文件从windows 文件管理器拖拽到batch runner窗口中,然后点击batch replace即可。
单文件测试:
1. ctrl-o打开文本文件
2. ctrl-h打开replace窗口
* replace unit选Line
* unit number filter输入7表示第7行
* replace with pattern输入chars($match,1,-4)\n表示保留该行第1到倒数第4个字符(即删除最后3个字符)
3. 点击replace完成。
单文件测试成功后,可以进行多文件批量处理:
4. 在以上第3步,点击batch...按钮
5. 把多个待处理文件从windows 文件管理器拖拽到batch runner窗口中,然后点击batch replace即可。
追问
Replace Pioneer的注册码是多少
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询