标题: [文本处理] 如何批量根据子文件夹中的关键字 重命名子文件夹下的文件? [打印本页]
作者: pcxnice 时间: 2020-5-8 11:13 标题: 如何批量根据子文件夹中的关键字 重命名子文件夹下的文件?
文件夹中的关键字是 .后加数字关键字3-4位
XXXXXXXXX XXX.1032 XXXX 文件夹名字类似这种
选中关键字后,在子文件夹中的所有文件前,加上 1032空格,如 abc改为 1032 abc
求大佬指点。
作者: xp3000 时间: 2020-5-8 19:05
本帖最后由 xp3000 于 2020-5-9 15:45 编辑
下载sed这个工具,放入C:\Windows\System32
或者放入需要处理文件夹里面
http://bcn.bathome.net/tool/4.7/sed.exe- @echo off
- setlocal enabledelayedexpansion
- pushd "%cd%"
- for /d %%a in (*) do (
- @CD /D "%~dp0"
- for /f "delims=" %%b in ('echo "%%a"^| sed "s/.\+\.\([0-9]\{3,4\}\).\+/\1/"') do (
- cd "%%a"
- for /f "delims=" %%c in ('dir /b/a-d/oN *.*') do (
- ren "%%c" "%%b %%c"
- ))
- )
- pause
复制代码
作者: smss 时间: 2020-5-8 22:48
本帖最后由 smss 于 2020-5-8 22:51 编辑
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /ad /b ^|findstr /i "[0-9]"') do (set str=%%a&set str_a=!str!&set str_b=!str:.=!
- for /l %%a in (0,1,9) do set str_a=!str_a:%%a=!
- call:calc !str_a!
- echo 源值!str!中包含的数字为!str_b!
- for /f "delims=" %%c in ('dir /a-d /b "%%a\*"') do ren "%%a\%%c" "!str_b! %%c")
- pause&exit
- :calc
- set n=0&set "s=%~1"
- :loop
- set "t=!s:~%n%,1!"
- if "%t%"=="" (set "str_b=!str_b:"=!"
- goto :eof)
- set "str_b=!str_b:%t%=!"&set /a n+=1
- goto loop
复制代码
作者: WHY 时间: 2020-5-9 11:50
回复 2# xp3000
这样可以简化脚本,提高执行速度:- @echo off
- for /f "tokens=1*" %%i in ('dir /b /a-d /s ^| sed -r "/.*\.([0-9]{3,4})\s[^\\]*\\[^\\]*$/!d; s//\1 &/"') do (
- echo ren "%%j" "%%i %%~nxj"
- )
- pause
复制代码
作者: xp3000 时间: 2020-5-9 12:04
本帖最后由 xp3000 于 2020-5-9 15:40 编辑
回复 4# WHY
哦谢谢,学习了,我目前只会傻瓜方式一步步弄
作者: pcxnice 时间: 2020-5-9 18:27
非常感谢各位大佬,周末有点忙,下周试一下。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |