Board logo

标题: [文本处理] 如何批量根据子文件夹中的关键字 重命名子文件夹下的文件? [打印本页]

作者: 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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. pushd "%cd%"
  4. for /d %%a in (*) do (
  5. @CD /D "%~dp0"
  6.      for /f "delims=" %%b in ('echo "%%a"^| sed "s/.\+\.\([0-9]\{3,4\}\).\+/\1/"') do (
  7. cd "%%a"
  8. for /f "delims=" %%c in ('dir /b/a-d/oN *.*') do (
  9. ren "%%c" "%%b %%c"
  10.     ))
  11. )
  12. pause
复制代码

作者: smss    时间: 2020-5-8 22:48

本帖最后由 smss 于 2020-5-8 22:51 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /ad /b ^|findstr /i "[0-9]"') do (set str=%%a&set str_a=!str!&set str_b=!str:.=!
  3. for /l %%a in (0,1,9) do set str_a=!str_a:%%a=!
  4. call:calc !str_a!
  5. echo 源值!str!中包含的数字为!str_b!
  6. for /f "delims=" %%c in ('dir /a-d /b "%%a\*"') do ren "%%a\%%c" "!str_b! %%c")
  7. pause&exit
  8. :calc
  9. set n=0&set "s=%~1"
  10. :loop
  11. set "t=!s:~%n%,1!"
  12. if "%t%"=="" (set "str_b=!str_b:"=!"
  13. goto :eof)
  14. set "str_b=!str_b:%t%=!"&set /a n+=1
  15. goto loop
复制代码

作者: WHY    时间: 2020-5-9 11:50

回复 2# xp3000


    这样可以简化脚本,提高执行速度:
  1. @echo off
  2. for /f "tokens=1*" %%i in ('dir /b /a-d /s ^| sed -r "/.*\.([0-9]{3,4})\s[^\\]*\\[^\\]*$/!d; s//\1 &/"') do (
  3.     echo ren "%%j" "%%i %%~nxj"
  4. )
  5. pause
复制代码

作者: xp3000    时间: 2020-5-9 12:04

本帖最后由 xp3000 于 2020-5-9 15:40 编辑

回复 4# WHY


    哦谢谢,学习了,我目前只会傻瓜方式一步步弄
作者: pcxnice    时间: 2020-5-9 18:27

非常感谢各位大佬,周末有点忙,下周试一下。




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