找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28665|回复: 7

[文件操作] [已解决]批处理如何删除文件夹名中指定字符前的内容?

[复制链接]
发表于 2024-3-17 11:46:34 | 显示全部楼层 |阅读模式
本帖最后由 gddsssko 于 2024-6-9 08:45 编辑

例如:
    指定:
          AAAAA
          BCDEFW

    原文件夹名:
          乱 七 八 糟123乱七八糟AAAAA文件文件
          一堆.乱名123()哈哈哈哈BCDEFW文件夹文件夹
    更改后:
          AAAAA文件文件
          BCDEFW文件夹文件夹
发表于 2024-3-17 14:09:57 | 显示全部楼层
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. for /f "delims=" %%a in ('more +12 "%~f0"') do (
  4.         for /f "delims=" %%i in ('dir /b /ad "*%%a*" 2^>nul') do (
  5.                 set str=%%i
  6.                 setlocal enabledelayedexpansion
  7.                 ren "!str!" "%%a!str:*%%a=!"
  8.                 endlocal
  9.         )
  10. )
  11. pause & exit
  12. rem 12行后存放指定字符串
  13. AAAAA
  14. BCDEFW
复制代码
发表于 2024-3-17 14:12:22 | 显示全部楼层
回复 1# gddsssko
加持sort/r确保深层目录总在前被处理...

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%d in ('dir /b/s/ad^|findstr /il "AAAAA BCDEFW"^|sort /r') do (
  3.         set "d=%%~nxd"
  4.         for %%s in (AAAAA BCDEFW) do (set "_d=!d:*%%s=!"&if "!d!" neq "!_d!" (ren "%%~d" "%%s!_d!"))
  5. )
  6. endlocal&exit/b
复制代码
发表于 2024-3-17 15:17:30 | 显示全部楼层
回复 1# gddsssko

用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )实现方式如下:

  1. gawk "BEGIN{str="AAAAA,BCDEFW";split(str,s,/,/)}{for(i=1;(i in s);i++){if($0~s[i]){n=split($0,A,s[i],m);Out="";for (j=1; j in m; j++)Out=Out m[j] A[j+1];print Out}}}" 1.txt>2.txt
复制代码
发表于 2024-3-17 15:21:17 | 显示全部楼层
  1. @echo off &setlocal enabledelayedexpansion
  2. set /p f=请输入关键字符(多个关键字用空格分隔开"AAA EEE GGG"):
  3. for %%x in (%f%) do (
  4.         for /f "delims=" %%a in ('dir /b /s /ad ^| find "%%x" ^|sort /r') do (
  5.                 set str=%%~nxa&set newstr=!str:*%%x=%%x!
  6.                 rem 预览确认结果无误,再去除 echo 保存后,运行就是执行更名
  7.                 echo ren "%%a"        "!newstr!"
  8.         )
  9. )
  10. pause
  11. endlocal&exit/b
复制代码
发表于 2024-3-17 17:10:02 | 显示全部楼层
特殊的文件夹名怎么弄???

例如指定
AAA
文件夹名为
          AAA乱 七 八 糟123乱七八糟AAA文件文件
          一堆.乱名123()哈哈哈哈AAAAAA文件夹文件夹
          乱七八糟AAA乱七八糟AAA文件文件
发表于 2024-3-17 18:30:26 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-3-17 18:34 编辑

回复 6# Five66

任选一个循环分隔符切分文件名即可,前提是尾部被保留子段不含循环分隔符。见下式结果...

  1. @echo off &setlocal enabledelayedexpansion
  2. for %%s in ("乱七八糟AAA乱七八糟AAA文件文件" "一堆AAA.乱名123(AAA)哈哈哈哈AAAAAA文件夹文件夹" "AAA乱 七 八 糟123乱七八糟AAA文件文件") do (
  3.         set "s=%%~s"&set "s=!s:AAA= !"&for %%a in (!s!) do (set "_s=%%a")
  4.         echo,AAA!_s!
  5. )
  6. endlocal&exit/b
复制代码
 楼主| 发表于 2024-3-19 17:11:36 | 显示全部楼层
感谢各位大佬,大佬们真帅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 00:19 , Processed in 0.019652 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表