批处理文本内容。 我想批量处理TXT文本的内容,功能是删除每个文本的其中一行的行首的前几个字或者行尾的

比如这个,我想去除第七行最后的3个字节 38秒 或者是第七行的行首开始的几个字节。就是哪一行的前几个字节或是哪一行的后几个字节

第1个回答  2013-01-31
=========================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=================================
我测试成功!祝你好运。
如果对你有帮助,请采纳!
第2个回答  2013-02-06
@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本回答被提问者采纳
第3个回答  2013-01-30
下边代码有注释,你在把代码保存成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追问

代码里怎么有廉政英雄.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"
)

追问

              这样保存成BAT格式。点击后没什么反应是不是代码里的空格什么的保存错误,你发个BAT文件到我QQ邮箱了好吗,谢谢
               

追答

不好意思,之前代码粘贴的时候第一行漏了两个字符,下面的应该没问题了,你试试看吧,把下边的代码完全放到记事本中(注释不用删了),另存为bat文件,不行的话再hi我

for /f "tokens=* delims=" %%n in ('dir /b *.txt') do (
rem 第七行,这个数字你自己改
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
rem "-3"表示要去掉倒数3个字,你自己改要去掉前边3个字 就用 set str=!str:~3!
set str=!str:~0,-3!
echo !str!>>temp.txt
) else (
echo %%a>>temp.txt
)
)
endlocal
del "%%n" /f/q
ren temp.txt "%%n"
)

追问

晕你自己测试没,运行后把TXT内容全部删除了换成那个txt的名字了,你把内容换成文件名了

追答

不好意思啊,我没空做测试,你试试下边的,我给改过了

for /f "tokens=* delims=" %%n in ('dir /b *.txt') do (
rem 第七行,这个数字你自己改
set /a n=7
set /a m=0
cd.>temp.txt
setlocal enabledelayedexpansion
for /f "tokens=* delims=" %%a in ('type "%%n"') do (
set /a m=!m!+1
if "!m!"== "!n!" (
set str=%%a
rem "-3"表示要去掉倒数3个字,你自己改要去掉前边3个字 就用 set str=!str:~3!
set str=!str:~0,-3!
echo !str!>>temp.txt
) else (
echo %%a>>temp.txt
)
)
endlocal
del "%%n" /f/q
ren temp.txt "%%n"
)

第4个回答  2013-01-30
用软件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即可。追问

Replace Pioneer的注册码是多少

本回答被网友采纳
相似回答