找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 39265|回复: 12

[文本处理] BAT如何批量在txt文本内容的最前面怎么插入一段文字?

[复制链接]
发表于 2018-8-9 10:50:46 | 显示全部楼层 |阅读模式
  1. @echo off
  2. :: 注意把要加的内容写在第7(即代码中more +7的那个数)行之下
  3. for /f "delims=" %%i in ('dir/b *.txt')do (
  4. echo %%i
  5. more +7 "%~0">>"%%i")
  6. echo 处理完毕&ping -n 3 127.1>nul
  7. goto :eof
  8. 此处改成要加的内容(可以为多行)
复制代码
找到的资料 有误   都是加在最末尾的还是乱码  

求解决
发表于 2018-8-10 09:04:17 | 显示全部楼层
把文件夹拖到批处理上。
  1. @echo off & setlocal EnableDelayedExpansion

  2. for /f "delims=" %%a in ("%~1\..") do (
  3.       set "新路径=%%~fa"
  4.           md "%%~fa\添加内容">nul 2>nul
  5.           del /q "%%~fa\添加内容\*.txt"
  6.         )
  7. for /f "delims=" %%a in ('dir/b "%~1\*.txt"') do (
  8.       set "文件名=%%~nxa"
  9.           set /a n=0
  10.       for /f "delims=" %%i in ('type "%~1\%%a"') do (
  11.               set /a n+=1
  12.               echo [!n!] %%i>>"%新路径%\添加内容\%%~nxa"
  13.               if !n! equ 7 call :LOOP
  14.                 )
  15.         )
  16. pause & exit
  17. :LOOP
  18. echo 我是中国人,我是中国人>>"%新路径%\添加内容\%文件名%"
  19. echo 去你奶奶的美国姥>>"%新路径%\添加内容\%文件名%"
  20. goto :eof
复制代码
 楼主| 发表于 2018-8-10 12:48:52 | 显示全部楼层
回复 2# xczxczxcz

好的感谢  我试试
发表于 2018-8-10 14:00:58 | 显示全部楼层
回复 2# xczxczxcz


    if !n! equ 7 这个条件判断的没有必要的吧,楼主是要在文本的最前面添加内容。
发表于 2018-8-10 14:02:25 | 显示全部楼层
回复 1# 修修的想法


    乱码的问题需要检查一下txt文件的格式,不是ANSI格式的吧?
发表于 2018-8-10 14:52:58 | 显示全部楼层
回复 4# Batcher


    如果文本是加在行首,那与楼主的所说的"可以为多行"相矛盾。楼主的注释中声明在第七行之下。若把多行文本当作一行倒是没问题。看来楼主是要举个试范才能明白意图。如楼主的txt文件为utf8的话,批处中要加一条转码的命令才能正确运行。
发表于 2018-8-10 14:59:20 | 显示全部楼层
回复 6# xczxczxcz


1. 楼主的意思不是加在每行的行首,而是加在第一行。比如原来是:
a
b
c
添加之后变成:
bbs
bathome
net

a
b
c

2. 你可能没太理解顶楼代码的作用,它不是要在txt的第七行添加内容,而是介绍bat本身的用法,它是利用 more +7 %0 这个命令的执行结果实现插入一段文本的。
 楼主| 发表于 2018-8-10 16:35:41 | 显示全部楼层
回复 7# Batcher


理解的对  乱码问题是你说的那个问题  感谢   可是还是在末尾 不是在最前面
 楼主| 发表于 2018-8-10 16:40:58 | 显示全部楼层
回复 2# xczxczxcz

不是太明白了 不知道的错误  本意以为在原来的代码上更改就可以的以为
发表于 2018-8-10 16:55:42 | 显示全部楼层
回复 9# 修修的想法

偶在 win10 1803 电脑上测试 more +n 根本就运行不了。提示参数过多。晚会到虚拟机中试下。
发表于 2018-8-10 17:15:56 | 显示全部楼层
回复 9# 修修的想法


是的,顶楼代码改一改就行了。
  1. @echo off
  2. :: 注意把要加的内容写在第8(即代码中more +8的那个数)行之下
  3. for %%i in (*.txt) do (
  4.     more +8 "%~0" > "%%i.tmp"
  5.     type "%%i" >> "%%i.tmp"
  6.     move /y "%%i.tmp" "%%i"
  7. )
  8. goto :eof
  9. 此处改成要加的内容(可以为多行)
复制代码
发表于 2018-8-10 18:20:32 | 显示全部楼层
回复 11# Batcher

偶理解了管理员代码的意思了,就是要把后附加的内容加到原有txt的最前面。用 more +n 来屏掉批处理代码本身回显。

在win10 中  more +n 会运行错误。需要开启扩展。即 more /e +n 才正常。win8 用 more +n  或 more /e +n 都正常。
 楼主| 发表于 2018-8-10 18:32:38 | 显示全部楼层
回复 11# Batcher

完美解决  就是不知能否支持子目录
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 17:42 , Processed in 0.020289 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表