Board logo

标题: (已解决)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

  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
复制代码

作者: Batcher    时间: 2019-7-16 12:35

下载 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. )
复制代码

作者: 黄大人    时间: 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