Board logo

标题: [文件操作] [已解决]求助:修改批处理代码,删除文件名中的指定数字 [打印本页]

作者: shimuren    时间: 2015-9-16 00:50     标题: [已解决]求助:修改批处理代码,删除文件名中的指定数字

  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*) do (
  3.     set "str="&set "var="&call :lp "%%~na"
  4.     if defined var ren "%%a" "!var:~1!%%~xa"
  5. )
  6. goto :eof
  7. :lp
  8. if not defined str set "str=%~1"
  9. for /f "tokens=1* delims=," %%a in ("%str%") do (
  10.     if "%%b" neq "" set "var=%var%,%%a"&set "str=%%b"&goto lp     
  11. )
复制代码
怎么让他只删除后面是数字的 ,如果是其他格式的(如字母,不连续数字22-33)就不删除
作者: pcl_test    时间: 2015-9-16 01:27

新人须知,本版规则
1、求助时,务必在顶楼一次性把问题交代清楚,建议给出完整有针对性的样本,样本过大可发网盘分享链接。勿发无意义的标题
2、使用 code 标记把代码部分括起来(单击回复框的 <> 按钮,复制粘贴代码进去),以便复制。问题解决后,请编辑顶楼帖子在标题前面注明[已解决]http://www.bathome.net/thread-3473-1-1.html
3、提问前先使用论坛搜索,勿发同类贴、重复贴
作者: 回家路上    时间: 2015-9-16 09:47

代码要用code标签括起来

这拉风的代码是要干嘛?
作者: CrLf    时间: 2015-9-16 16:30

歪楼:
call lp = 呼叫老婆
作者: shimuren    时间: 2015-9-16 20:36

回复 3# 回家路上


    就是修改成:删除文件名时候判断下 是对应的格式就删 不是就不删
作者: 回家路上    时间: 2015-9-16 20:57

本帖最后由 回家路上 于 2015-9-16 21:55 编辑

回复 5# shimuren


这么半天了,就是不说你需求,
让别人读代码去揣测需求总是不好。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*) do (
  3.     set fn=%%~na
  4. set tmp=!fn:,=,!
  5. if "!tmp!" neq "%%~na" (
  6. for %%i in (!tmp!) do set suf=%%i
  7. for /f "delims=0123456789" %%i in ("!suf!") do set isNaN=1
  8. if not defined isNaN for %%i in (!suf!) do ren "%%~nxa" "!fn:,%%i=!%%~xa"
  9. set isNaN=
  10. )
  11. )
  12. pause & exit /b
复制代码

作者: shimuren    时间: 2015-9-17 08:47

回复 6# 回家路上


    不好意思    就是修改成只删除某个字母开头的某一段比如文件名:单向,22-30,N456.txt,执行批处理后,只删除,N456这段信息,如果没有字母N开头的就不删除,最好还要能支持拖拽到图标上执行
谢谢
作者: 回家路上    时间: 2015-9-17 10:23

一个特例不算例子。我不再猜测了。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2