标题: [文件操作] 批处理如何提取文件名中指定位数的数字字符串来重命名文件 [打印本页]
作者: 我是一只小小鸟 时间: 2018-4-16 17:25 标题: 批处理如何提取文件名中指定位数的数字字符串来重命名文件
修改文件名,只留8位数字
我有一系列的文件名,他其中都有一个八位数的数字。比方说
��ʱ��֮�� �Ϻ�������չ30��ع�չ_12216904
2008年上海市少年儿童唐诗宋词经典吟诵选本_12183905
12181200_2008中国动漫产业发展报告_
可以帮我写一个脚本,把这8位数外的,其他字符都删除,只留下8位数做为文件名吗
作者: yhcfsr 时间: 2018-4-16 18:24
本帖最后由 yhcfsr 于 2018-4-16 18:26 编辑
- @echo off
- for /f "delims=" %%a in ('dir /a-d/s/b^|findstr "[0-9]"') do (
- call :get_num "%%~na" name
- setlocal enabledelayedexpansion
- ren "%%a" "!name!%%~xa"
- endlocal
- )
- pause&exit
-
- :get_num
- setlocal&set "name=%~1"
- :lp
- set "ch=%name:~,1%"
- rem 取一字,如果是数字,截8字:如果全数字就输出,否则继续逐字扫描
- echo;"%ch%"|findstr "[0-9]">nul&&(
- echo;%name:~,8%|findstr "^[0-9]*$">nul&&(endlocal&set "%2=%name:~,8%"&goto :eof)
- )
- set "name=%name:~1%"
- if "%name%"=="" endlocal&goto :eof
- goto :lp
复制代码
效率是没有的,同名判别是没做的(太简单懒得写)。所以祈祷你的8位数没有重复吧。
作者: 我是一只小小鸟 时间: 2018-4-16 18:39
回复 2# yhcfsr
这个解决了我的问题,不过我有个问题,rem 取一字,如果是数字,截8字:如果全数字就输出,否则继续逐字扫描[/color 这些是什么意思呢,这个是选择我要输出的字数吗,
作者: yhcfsr 时间: 2018-4-16 18:44
本帖最后由 yhcfsr 于 2018-4-16 18:46 编辑
回复 3# 我是一只小小鸟
这个只是注释,没有任何作用,BAT不会执行。要不是好看,你删除就行。
作者: 我是一只小小鸟 时间: 2018-4-16 18:46
回复 4# yhcfsr
好的,非常感谢
作者: 我是一只小小鸟 时间: 2018-4-23 14:19
回复 2# yhcfsr
你好,之前你的代码,可以正常使用,不过这两天,发现了一个问题。请看下图
�2ݼ�����_12254494.rar
�2ݼ����μ�_12254500.rar
类似上面这种批处理显示 系统找不到指定文件夹,
这个可以帮我看一下,应该怎么解决吗
作者: yhcfsr 时间: 2018-4-23 19:11
回复 6# 我是一只小小鸟
加我QQ 33892006
作者: WHY 时间: 2018-4-25 09:52
- PowerShell "dir *.rar | ?{$_.Name -match '\d{8}'} | ren -newName {$matches[0]+'.rar'}"
复制代码
作者: 我是一只小小鸟 时间: 2018-4-25 11:01
回复 8# WHY
非常感谢
作者: yeke 时间: 2020-4-25 23:20
回复 8# WHY
PowerShell "dir *.rar | ?{$_.Name -match '\d{8}'} | ren -newName {$matches[0]+'.rar'}"
你好,能否帮修改下,其它名字不变,只修改指定位数,感谢了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |