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

[文本处理] 批处理如何根据文本内容修改文件名

[复制链接]
发表于 2012-1-13 22:01:02 | 显示全部楼层 |阅读模式
本帖最后由 CrLf 于 2012-1-14 00:58 编辑

文件夹内的每个txt第一行第六个字符和第二行第一个字符开始用各个txt名称并去除包含txt名称中包含的" 1900"到" 5000"
比如有
abc 1900.txt
abcd 1901.txt
abcde 1902.txt
生成的效果是
abc 1900.txt里面的内容第一行第六个字符开始生成abc,第二行第一个字符开始生成abc
abcd 1901.txt里面的内容第一行第六个字符开始生成abcd,第二行第一个字符开始生成abcd
abcde 1902.txt里面的内容第一行第六个字符开始生成abcde,第二行第一个字符开始生成abcde
这样子可以做到吗?谢谢大家
发表于 2012-1-13 22:21:21 | 显示全部楼层
本帖最后由 ivor 于 2012-1-13 22:33 编辑

回复 1# linqing0
  1. @echo off
  2. for /r %%i in (*.txt) do (
  3.         for /f "tokens=1,2" %%j in ("%%~nxi") do (
  4.                 echo      %%j>%%i
  5.                 echo %%j>>%%i
  6.         )
  7. )
复制代码
 楼主| 发表于 2012-1-13 22:37:35 | 显示全部楼层
本帖最后由 linqing0 于 2012-1-13 22:39 编辑

谢谢ivor,我运行试了一下,可以修改,但是有时候txt文本是abc abcd 1900.txt这种的生成的效果变成abc了,如果我想要达到的效果是abc abcd这样子要怎么做,
还有一点请教一下,如果txt文本里原来有内容的话,只是要把内容添加进去要怎么做
发表于 2012-1-14 00:59:12 | 显示全部楼层
能否上传一两个小样本?
 楼主| 发表于 2012-1-14 01:21:16 | 显示全部楼层
比如abc cde 1900.txt里的内容是
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
要达到的效果是
hhhhhabc cdehhhhhhhhhh
abc cdehhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
就是要把最后一节去除
发表于 2012-1-14 14:10:14 | 显示全部楼层
本帖最后由 ivor 于 2012-1-14 14:16 编辑

回复 5# linqing0
  1. @echo off & setlocal ENABLEDELAYEDEXPANSION
  2. md ..\NewFolder 2>nul

  3. for /r %%i in (*.txt) do (
  4.         set File=%%~ni
  5.                 set File=!File:~0,-5!
  6.                 set Count=0
  7.                
  8.                
  9.                 for /f "usebackq" %%j in ("%%i") do (
  10.                         set /a Count+=1
  11.                        
  12.                        
  13.                         if !Count! LEQ 2 (
  14.                        
  15.                         set Str=%%j
  16.                         ECHO !Str:~,5!!File!!Str:~5! > ..\NewFolder\%%~nxi
  17.                                
  18.                                 if !Count! EQU 2 (
  19.                                        
  20.                                         ECHO !File!%%j >> ..\NewFolder\%%~nxi
  21.                                
  22.                                 )
  23.                                
  24.                         ) else (
  25.                        
  26.                                 echo %%j >> ..\NewFolder\%%~nxi
  27.                
  28.                         )
  29.                 )
  30.                
  31.                
  32. )
  33. ::处理的结果已经放在了上层目录中的NewFolder目录中
  34. pause
复制代码
用之前注意备份数据
 楼主| 发表于 2012-1-14 18:16:24 | 显示全部楼层
谢谢ivor写了这么多代码,辛苦了
 楼主| 发表于 2012-1-14 19:11:10 | 显示全部楼层
本帖最后由 linqing0 于 2012-1-14 19:21 编辑

代码在不包含特殊字符的时候可以完美运行,我有一个疑问请教一下
比如abc cde 1900.txt里的内容是
[hhh]hhhh hhh(h@h@h)h
,hhh,hhh,hhh,hhh,hhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
要达到的效果是
[hhh]abc cdehhhh hhh(h@h@h)h
abc cde,hh h,hh h,hh h,hh h,hh h
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
这样子的情况要怎么做,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 19:32 , Processed in 0.019012 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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