[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

(已解决)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-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是你要定义的标签。
JC网络工作室

TOP

回复 3# zaqmlp


    谢谢,钱已打到你微信上了

TOP

回复 4# Batcher

可能是我太菜,不会改你这代码,用不了,不过还是谢谢你

TOP

下载 sed.exe
http://bcn.bathome.net/s/tool/index.html?key=sed

把它和test.bat放到txt所在的文件夹下
测试test.bat之前做好txt文件备份
  1. @echo off
  2. set InsertLine=3
  3. set InsertTag=h1
  4. set InsertStr=搞笑歇后语句子大全
  5. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  6.     echo 正在处理文件 %%i
  7.     sed -i "%InsertLine%s#$#\n<%InsertTag%>%InsertStr%</%InsertTag%>#" "%%i"
  8. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. set 行数=3
  7. set "result=.\结果"
  8. md "%result%" 2>nul
  9. powershell -NoProfile -ExecutionPolicy bypass ^
  10.     $files=@(dir -liter '%~dp0'^|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});^
  11.     for($i=0;$i -lt $files.length;$i++){^
  12.         write-host $files[$i].Name;^
  13.         $text=[IO.File]::ReadAllLines($files[$i].FullName,[Text.Encoding]::Default);^
  14.         if($text.length -ge %行数%){^
  15.             $text[%行数%-1]=$text[%行数%-1]+\"`r`n<h1>\"+$files[$i].BaseName+\"</h1>\";^
  16.         };^
  17.         [IO.File]::WriteAllLines('%result%\'+$files[$i].Name, $text, [Text.Encoding]::Default);^
  18.     };
  19. echo;%info%
  20. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

楼主,其他语言写的可以吗?
JC网络工作室

TOP

返回列表