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

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

文件夹中的关键字是  .后加数字关键字3-4位   

XXXXXXXXX XXX.1032 XXXX  文件夹名字类似这种

选中关键字后,在子文件夹中的所有文件前,加上 1032空格,如 abc改为 1032 abc

求大佬指点。

本帖最后由 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
复制代码

TOP

本帖最后由 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
复制代码

TOP

回复 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
复制代码
1

评分人数

TOP

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

回复 4# WHY


    哦谢谢,学习了,我目前只会傻瓜方式一步步弄

TOP

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

TOP

返回列表