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

[文件操作] 批处理如何提取文件名中指定位数的数字字符串来重命名文件

修改文件名,只留8位数字

我有一系列的文件名,他其中都有一个八位数的数字。比方说


��ʱ��֮��  �Ϻ�������չ30��ع�չ_12216904

2008年上海市少年儿童唐诗宋词经典吟诵选本_12183905

12181200_2008中国动漫产业发展报告_

可以帮我写一个脚本,把这8位数外的,其他字符都删除,只留下8位数做为文件名吗

回复 8# WHY


   PowerShell "dir *.rar | ?{$_.Name -match '\d{8}'} | ren -newName {$matches[0]+'.rar'}"
你好,能否帮修改下,其它名字不变,只修改指定位数,感谢了

TOP

回复 8# WHY


    非常感谢

TOP

  1. PowerShell "dir *.rar | ?{$_.Name -match '\d{8}'} | ren -newName {$matches[0]+'.rar'}"
复制代码

TOP

回复 6# 我是一只小小鸟


    加我QQ 33892006

TOP

回复 2# yhcfsr


    你好,之前你的代码,可以正常使用,不过这两天,发现了一个问题。请看下图

�2ݼ�����_12254494.rar     
�2ݼ����μ�_12254500.rar


类似上面这种批处理显示  系统找不到指定文件夹,
这个可以帮我看一下,应该怎么解决吗

TOP

回复 4# yhcfsr


    好的,非常感谢

TOP

本帖最后由 yhcfsr 于 2018-4-16 18:46 编辑

回复 3# 我是一只小小鸟
这个只是注释,没有任何作用,BAT不会执行。要不是好看,你删除就行。

TOP

回复 2# yhcfsr


    这个解决了我的问题,不过我有个问题,rem 取一字,如果是数字,截8字:如果全数字就输出,否则继续逐字扫描[/color   这些是什么意思呢,这个是选择我要输出的字数吗,

TOP

本帖最后由 yhcfsr 于 2018-4-16 18:26 编辑
  1. @echo off
  2. for /f "delims=" %%a in ('dir /a-d/s/b^|findstr "[0-9]"') do (
  3. call :get_num "%%~na" name
  4. setlocal enabledelayedexpansion
  5. ren "%%a" "!name!%%~xa"
  6. endlocal
  7. )
  8. pause&exit
  9. :get_num
  10. setlocal&set "name=%~1"
  11. :lp
  12. set "ch=%name:~,1%"
  13. rem 取一字,如果是数字,截8字:如果全数字就输出,否则继续逐字扫描
  14. echo;"%ch%"|findstr "[0-9]">nul&&(
  15. echo;%name:~,8%|findstr "^[0-9]*$">nul&&(endlocal&set "%2=%name:~,8%"&goto :eof)
  16. )
  17. set "name=%name:~1%"
  18. if "%name%"=="" endlocal&goto :eof
  19. goto :lp
复制代码
效率是没有的,同名判别是没做的(太简单懒得写)。所以祈祷你的8位数没有重复吧。

TOP

返回列表