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

[文件操作] 求助批处理删除文件名称中的汉字只保留数字?

意思是这样的。

比如有这么个名子 "批处理之家01"   

然后直接把它改成01 。只判断可有数字。有数字就保留数字。其它全部删除。

因为我这里的电影服务器高达10W部电影。都是这样的命名。现在要改了。手动的话就要累死了。

没有数字的咋办?
数字有重复的咋办?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

没有数字直接跳过不处理。

另外讲一下限格式。RM 格式。要不然把其它程序也给改名子就不好了。

TOP

难道还真能做出来???
批处理有这么强大吗?哇哈哈。

TOP

  1. @echo off
  2. set "str=我是谁01"
  3. :kaishi
  4. echo %str:~0,1%|findstr "^[0-9]*$">nul || (set str=%str:~1%&goto kaishi)
  5. echo %str%
  6. pause
复制代码
可以根据这个思路改成需要的(没有做不到,只有想不到)

[ 本帖最后由 zjw767676 于 2009-3-11 22:48 编辑 ]

TOP

  批处理擅长的就是对文件名进行操作,楼主最好描述一下文件名的规律,比如:所有的rm文件中,文件名是不是只有汉字和数字?若有其他字符,有没有什么分隔标志?否则,代码不好写。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

  1. @echo off
  2. ::文件都是如LZ所说一样的格式列在test.txt中
  3. for /f %%i in (test.txt) do call :aa %%~ni                 
  4. pause::[提示按任意键结束...]
  5. :aa
  6. set str=
  7. set "str=%1"
  8. :kaishi
  9. echo %str:~0,1%|findstr "^[0-9]*$">nul || (set str=%str:~1%&goto kaishi)
  10. echo %str%.rm>>test2.txt
  11. goto :eof
复制代码

TOP

  1. @echo off
  2. ::RM格式电影重命名演示程序
  3. ::只保留文件名中的数字(不考虑数字重复的情况)和后缀名
  4. ::如何演示结果无误,把ren前面的echo去掉,即可实现真正重命名。
  5. setlocal enabledelayedexpansion
  6. set FilmFolder=C:\test
  7. for /f "delims=" %%a in ('dir /s /b %FilmFolder%\*.rm') do (
  8.   call :NumFilter %%~na
  9.   if "!num!" neq "" (
  10.     echo ren "%%a" !num!%%~xa
  11.   )
  12. )
  13. pause
  14. goto :eof
  15. :NumFilter
  16. set "str=%1"
  17. set num=
  18. :LoopFilter
  19. set char=%str:~0,1%
  20. if %char% geq 0 (
  21.   if %char% leq 9 (
  22.     set num=!num!%char%
  23.   )
  24. )
  25. set str=%str:~1%
  26. if "%str%" neq "" (
  27.   goto :LoopFilter
  28. ) else (
  29.   goto :eof
  30. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

多谢各位!我明天上班就来测试。

本来想自己写了一个程序来的。苦于刚刚玩。NET程序不足一个月。着实写不出。

另外也不会有重复的。因为都是电影。格式如下

士兵突击(此为文件夹)\士兵突击01.rm
士兵突击(此为文件夹)\士兵突击02.rm
士兵突击(此为文件夹)\士兵突击03.rm

[ 本帖最后由 luo0527 于 2009-3-12 21:15 编辑 ]

TOP

  如果要写一个通用代码,估计够呛。最好的办法是针对具体应用,尽可能地利用现有条件编写代码,则难度大为降低。而代码最终编成什么模样,是和数据格式密切相关的,所以,楼主应该提供尽可能多的数据信息,比如:文件名的组成规律是什么?是不是只有汉字和数字(看你的标题描述应该如此,但是最好能确认一下)?汉字和数字是混杂的还是各自连成一串?仅凭顶楼的一个举例,远远无法窥知全貌,楼主应该用文字详细加以说明。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

格式具体是带有特有特殊符号的.如☆ 汉字.最后是字母.

☆☆这是一个电影名称01.rm 就是这么样的格式.全部名称都是这样的.

TOP

::只保留文件名中的数字(不考虑改名后重名的情况)
::如果演示结果无误,把ren前面的echo去掉,即可实现真正重命名。
::文件名不能含有 ! & 符号。
  1. @echo off&Setlocal EnableDelayedExpansion
  2. for /l %%a in (0 1 9) do set .%%a=a
  3. for /f "delims=" %%a in ('dir/b/s/a-d *.rm') do (
  4.    set str=&set num=%%~na
  5.    set "num=!num: =!"
  6.    for /l %%i in (0 1 9) do set "num=!num:%%i= %%i !"
  7.    for %%i in (!num!) do if defined .%%i set "str=!str!%%i"
  8.    if defined str echo ren "%%a" "!str!%%~xa"
  9. )
  10. pause
复制代码

[ 本帖最后由 随风 于 2009-3-14 17:32 编辑 ]
技术问题请到论坛发帖求助!

TOP

经过测试。全部不通过。
另外问一下随风。在哪去掉echo?

TOP

代码中只有2个echo 你说去掉哪个呢?
技术问题请到论坛发帖求助!

TOP

回复 13楼 的帖子

好好看看批处理基础教程吧,总想要现成的代码不利于自己的提高。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表