标题: (已解决)30块钱--很多txt文本,如何批处理把文件名加上标签h1插入某行 [打印本页]
作者: 黄大人 时间: 2019-7-16 08:41 标题: (已解决)30块钱--很多txt文本,如何批处理把文件名加上标签h1插入某行
本帖最后由 黄大人 于 2019-7-23 23:21 编辑
30块钱-跪求--很多txt文本,文件名不同,如何批处理把文件名加上标签h1插入某行,其他内容后退,
比如文本名为--搞笑歇后语句子大全.txt----内容是:
原内容:
111111ddd111
222fgfkj22222
333fggdf422kf
445666ffffff
55555dfdfgfg
............
操作后实现:
111111ddd111
222fgfkj22222
333fggdf422kf
<h1>搞笑歇后语句子大全</h1>
445666ffffff
55555dfdfgfg
............
具体报酬:30元人民币
支付方式:微信
联系方式:微信:
有效期限:已解决
PS:1、代码要能很好的扩展,第几行我要能很方便的修改,现在插入的是h1标签也能方便改h2 h3.....
2、我一次性要操作2万篇文本,速度要快点,最好窗口有进度提示滚动,免得死机了都不知道
作者: JC_2019 时间: 2019-7-16 09:58
楼主,其他语言写的可以吗?
作者: zaqmlp 时间: 2019-7-16 11:36
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- cd /d "%~dp0"
- set 行数=3
- set "result=.\结果"
- md "%result%" 2>nul
- powershell -NoProfile -ExecutionPolicy bypass ^
- $files=@(dir -liter '%~dp0'^|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});^
- for($i=0;$i -lt $files.length;$i++){^
- write-host $files[$i].Name;^
- $text=[IO.File]::ReadAllLines($files[$i].FullName,[Text.Encoding]::Default);^
- if($text.length -ge %行数%){^
- $text[%行数%-1]=$text[%行数%-1]+\"`r`n<h1>\"+$files[$i].BaseName+\"</h1>\";^
- };^
- [IO.File]::WriteAllLines('%result%\'+$files[$i].Name, $text, [Text.Encoding]::Default);^
- };
- echo;%info%
- pause
复制代码
作者: Batcher 时间: 2019-7-16 12:35
下载 sed.exe
http://bcn.bathome.net/s/tool/index.html?key=sed
把它和test.bat放到txt所在的文件夹下
测试test.bat之前做好txt文件备份- @echo off
- set InsertLine=3
- set InsertTag=h1
- set InsertStr=搞笑歇后语句子大全
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- echo 正在处理文件 %%i
- sed -i "%InsertLine%s#$#\n<%InsertTag%>%InsertStr%</%InsertTag%>#" "%%i"
- )
复制代码
作者: 黄大人 时间: 2019-7-23 23:33
回复 4# Batcher
可能是我太菜,不会改你这代码,用不了,不过还是谢谢你
作者: 黄大人 时间: 2019-7-23 23:35
回复 3# zaqmlp
谢谢,钱已打到你微信上了
作者: JC_2019 时间: 2019-7-24 23:18
本帖最后由 JC_2019 于 2019-7-24 23:23 编辑
@echo off
setlocal enabledelayedexpansion
set info=bat批量处理把文件名加上标签h1插入某行,支付宝扫码头像,感谢赞助,你的赞助对作者很重要!
rem 有问题,可加微信17772228910及时沟通
title %info%
echo 批处理正在处理...........
echo.
::path1指定txt文件放的文件夹
set path1="c:\test"
::row1指定你要插入的行
set row1=5
::count1处理多少个文件
set count1=0
::自定义标签
set "bq1=^<h1^>"
set "bq2=^</h1^>"
::行数不能为负数
if %row1% leq 0 (
echo 行数不能为0或负数!
pause
exit
)
::检查你的文件夹存不存在
if not exist %path1% (
echo 你提供的路径不存在,请检查!
pause
exit
) else (
::新建一个新的文件夹用来存放处理过的文件
if not exist %~pd0new (
md %~pd0new
) else (
del /f/q %~pd0new\*.*
)
cd /d %path1%
::取文件名
for /f "delims=" %%i in ('dir /a-d/b *.txt') do (
set /a count1+=1
echo 正处理%%i文件. (第!count1!个文件)
::count2用来表示每一行
set count2=0
::count3用来表示txt里指定的行有没有超出,如果超出就放到最后一行
set count3=0
::存放文件名
set filename=%%~ni
for /f "delims=" %%a in ('type %%i') do (
set temo1=%%a
set /a count2+=1
::把数据传递给新的文件txt
if !count2!==1 (
if %row1%==!count2! (
set count3=4
echo %bq1%!filename!%bq2% >%~pd0new\%%~ni.txt
echo !temo1! >>%~pd0new\%%~ni.txt
) else (
echo !temo1! >%~pd0new\%%~ni.txt
)
) else (
if %row1%==!count2! (
set count3=4
echo %bq1%!filename!%bq2% >>%~pd0new\%%~ni.txt
echo !temo1! >>%~pd0new\%%~ni.txt
) else (
echo !temo1! >>%~pd0new\%%~ni.txt
)
)
)
if !count3!==0 (
echo %bq1%!filename!%bq2% >>%~pd0new\%%~ni.txt
)
echo.
)
)
echo.
echo 路径%path1%中的所有txt文件处理已完成,共处理!count1!个txt文件!
echo.
echo;%info%
pause
纯bat供楼主一个参考 path 是放txt文件夹,row1是指你要在多少行插入, bq1,bq2是你要定义的标签。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |