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

[文本处理] 【已解决】如何批量将文件名插入到文本第1行和第2行之间?

[复制链接]
发表于 2016-3-30 00:58:41 | 显示全部楼层
遗留问题:
more 为什么能取得已经被 set /p 取走的内容?
发表于 2016-3-30 01:02:46 | 显示全部楼层
本帖最后由 happy886rr 于 2016-3-30 01:06 编辑

回复 17# CrLf
他不是外层加了一组括号吗?当成一行命令了,把文本more +1)<“%%a”,  延迟也在more之前就关了。
发表于 2016-3-30 01:12:17 | 显示全部楼层
回复 18# happy886rr


    做个实验:
  1. @echo off
  2. (
  3.         echo 第一行
  4.         echo 第二行
  5.         echo 第三行
  6.         echo 第四行
  7. )>a.txt

  8. (
  9.         setlocal enabledelayedexpansion
  10.         set /p line_1=
  11.         echo;line_1=!line_1!
  12.         rem 取得第一行缓冲区

  13.         set /p line_2=
  14.         echo;line_2=!line_2!
  15.         rem 取得第二行缓冲区

  16.         find /n /v ""
  17.         rem more 和 find 等第三方居然能获取完整的重定向输入

  18.         set /p line_null=
  19.         echo;line_null=!line_null!
  20.         rem 之后再用 set /p 就无法取得重定向输入了
  21. )<a.txt
  22. pause
复制代码
发表于 2016-3-30 01:37:03 | 显示全部楼层
回复 19# CrLf
我觉得find和more是针对整个文本来的,不存在部分重定向输入,永远也做不到部分行重定向给find、more。它们一次性就独吞了,不留后路。
发表于 2016-4-1 17:10:51 | 显示全部楼层
回复 3# pcl_test
set/p可以保真的获取绝大多数特殊字符行,不过尾部的tab制表符全部被过滤了。文本无损处理还是得靠第三方。
发表于 2016-4-1 17:45:46 | 显示全部楼层

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /s/b/l/aa *.txt') do (
  4.     for /f "delims=" %%a in (%%i) do (
  5.         set/a n+=1
  6.         if !n! equ 1 set "a1=%%a"
  7.         if !n! equ 2 set "a2=%%a"
  8.     )
  9.     set n=0
  10.     for /f "skip=2 delims=" %%b in (%%i) do (
  11.         set/a a+=1
  12.         if !a! equ 1 (echo,!a1!
  13.         echo,%%~ni
  14.         echo,!a2!)>%temp%\%%~nxi
  15.         echo,%%b >>%temp%\%%~nxi
  16.     )
  17.     set a=0&set a1=&set a2=
  18.     move /y "%temp%\%%~nxi" "%%i"
  19. )
  20. pause

复制代码
发表于 2016-4-3 13:19:15 | 显示全部楼层
  1. """
  2. python文件名插入指定行.py
  3. http://bbs.bathome.net/thread-39833-1-1.html
  4. 2016年4月3日 13:08:57 codegay
  5. """
  6. fn="temp.txt"
  7. with open(fn) as f:
  8.     txt=f.readlines()
  9.     txt.insert(3,fn+"\n")#文件名加上换行符号插入第四行

  10. with open(fn,"w+") as f:
  11.     f.writelines(txt)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 03:04 , Processed in 0.010371 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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