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

[文本处理] 删除指定扩展名文件的文件名前缀

RT,由于工作需要,想编写一个小程序,要求批量修改指定扩展名,(.seq,.ab1)文件的文件名,文件名举例G08.CS080121018_0143.AG1.M13F.ab1->AG1.M13F.ab1
E06.CS080121018_0169.AG14.M13F.seq->AG14.M13F.seq
删除的前缀位数可由用户指定.
这里前缀指的是G08.CS080121018_0143. 共计21位。别人每次提交给我,一次提交的文件前缀是一样的位数,第二次再提交,位数可能就都变成20位了。
本人菜鸟诚心请教各位高手,能否贴出代码。感激不尽!


PS:对文件名规律的解释:三个“.”分为四段式,第二段及“.”为需要删除的。表述不清请以实例为准。

[ 本帖最后由 MarkovChain 于 2008-11-29 17:26 编辑 ]

  文件名有什么规律?哪些算前缀?是否包含特殊字符?是否需要修改子文件夹中的文件……请不要单纯举例,而要用文字予以详细说明——就算是把所有的文件名列出来,你不用文字描述,又有几个人能知道它们的准确规律?请在顶楼更新你的问题。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

可能是说用小点 “ . " 来分隔吧,一个点分开两个所谓 ”前缀“。

TOP

谢谢版大及时提醒

TOP

要删除的那部分G08.CS080121018_0143位数是固定的么?
要保留的那部分AG1.M13F.ab1位数是固定的么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或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. echo 请输入需删除的位数:
  3. set /p n=
  4. Setlocal EnableDelayedExpansion
  5. for /f "delims=" %%a in ('dir/b *.seq *.ab1') do (
  6.    set "str=%%~na"
  7.    ren "%%a" "!str:~%n%!%%~xa"
  8. )
  9. pause
复制代码
技术问题请到论坛发帖求助!

TOP

对文件名规律的解释:两个“.”分为三段式,第一段及“.”为需要删除的。
楼主的要求怎么又变了?
6楼代码以不适合楼主的要求。。。
技术问题请到论坛发帖求助!

TOP

回复 5楼 的帖子

删除部分不固定,像C那样由用户输入,而不是每次我改代码

TOP

:
  1. @echo off
  2. echo 请输入需删除的位数:
  3. set /p n=
  4. Setlocal EnableDelayedExpansion
  5. for /f "delims=" %%a in ('dir/b *.seq *.ab1') do (
  6.    for /f "tokens=1* delims=." %%i in ("%%a") do (
  7.       set "str=%%i."
  8.       ren "%%a" "!str:~%n%!%%j"
  9. ))
  10. pause
复制代码
技术问题请到论坛发帖求助!

TOP

回复 7楼 的帖子

谢谢斑竹啊。我的要求没变,我试了你的代码,能很好的解决问题,谢谢了。

TOP

如果每个文件都会出现 AG,且出现位置相同。
可以先运行下面的程序检查一下有没有错,如果没错就去掉下面红色这句中的 echo 再运行。
if /i "!fstr:~,2!"=="AG" echo ren "%%i.%%j.%%k" "%%k"

以下代码在满足第一句条件的情况下可多次运行
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. for /f "tokens=1,2* delims=." %%i in ('dir/b *.ab1 *.seq') do (
  4. set "fstr=%%k"
  5. if /i "!fstr:~,2!"=="AG" echo ren "%%i.%%j.%%k" "%%k"
  6. )
  7. pause
复制代码

TOP

楼主是需注意,这样的重命名代码是不能反复运行的,否则你的文件名会越来越短,若要反复运行,需知道你已经重命名过的文件名有什么固定特征。
技术问题请到论坛发帖求助!

TOP

谢谢各位!本人着实菜鸟,只接触过C。故能否以6L代码为例,稍做解释

TOP

回复 13楼 的帖子

哪句不懂,就问哪句,有很多热心人会告诉你答案;如果全部不懂,建议先去学习基础教程,这样才能更快的掌握批处理。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  如果想要完美解决你的问题,还请楼主补充两点:
  1、以点号分隔的节,最少和最多各有多少个?
  2、你最终想保留多少节?
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

返回列表