标题: [文件操作] [已解决]批处理如何删除文件夹名中指定字符前的内容? [打印本页]
作者: gddsssko 时间: 2024-3-17 11:46 标题: [已解决]批处理如何删除文件夹名中指定字符前的内容?
本帖最后由 gddsssko 于 2024-6-9 08:45 编辑
例如:
指定:
AAAAA
BCDEFW
原文件夹名:
乱 七 八 糟123乱七八糟AAAAA文件文件
一堆.乱名123()哈哈哈哈BCDEFW文件夹文件夹
更改后:
AAAAA文件文件
BCDEFW文件夹文件夹
作者: 77七 时间: 2024-3-17 14:09
- @echo off
- rem 批处理保存为ansi编码格式
- for /f "delims=" %%a in ('more +12 "%~f0"') do (
- for /f "delims=" %%i in ('dir /b /ad "*%%a*" 2^>nul') do (
- set str=%%i
- setlocal enabledelayedexpansion
- ren "!str!" "%%a!str:*%%a=!"
- endlocal
- )
- )
- pause & exit
- rem 12行后存放指定字符串
- AAAAA
- BCDEFW
复制代码
作者: aloha20200628 时间: 2024-3-17 14:12
回复 1# gddsssko
加持sort/r确保深层目录总在前被处理...- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%d in ('dir /b/s/ad^|findstr /il "AAAAA BCDEFW"^|sort /r') do (
- set "d=%%~nxd"
- for %%s in (AAAAA BCDEFW) do (set "_d=!d:*%%s=!"&if "!d!" neq "!_d!" (ren "%%~d" "%%s!_d!"))
- )
- endlocal&exit/b
复制代码
作者: hfxiang 时间: 2024-3-17 15:17
回复 1# gddsssko
用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )实现方式如下:- 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
复制代码
作者: ppll2030 时间: 2024-3-17 15:21
- @echo off &setlocal enabledelayedexpansion
- set /p f=请输入关键字符(多个关键字用空格分隔开"AAA EEE GGG"):
- for %%x in (%f%) do (
- for /f "delims=" %%a in ('dir /b /s /ad ^| find "%%x" ^|sort /r') do (
- set str=%%~nxa&set newstr=!str:*%%x=%%x!
- rem 预览确认结果无误,再去除 echo 保存后,运行就是执行更名
- echo ren "%%a" "!newstr!"
- )
- )
- pause
- endlocal&exit/b
复制代码
作者: Five66 时间: 2024-3-17 17:10
特殊的文件夹名怎么弄???
例如指定
AAA
文件夹名为
AAA乱 七 八 糟123乱七八糟AAA文件文件
一堆.乱名123()哈哈哈哈AAAAAA文件夹文件夹
乱七八糟AAA乱七八糟AAA文件文件
作者: aloha20200628 时间: 2024-3-17 18:30
本帖最后由 aloha20200628 于 2024-3-17 18:34 编辑
回复 6# Five66
任选一个循环分隔符切分文件名即可,前提是尾部被保留子段不含循环分隔符。见下式结果...- @echo off &setlocal enabledelayedexpansion
- for %%s in ("乱七八糟AAA乱七八糟AAA文件文件" "一堆AAA.乱名123(AAA)哈哈哈哈AAAAAA文件夹文件夹" "AAA乱 七 八 糟123乱七八糟AAA文件文件") do (
- set "s=%%~s"&set "s=!s:AAA= !"&for %%a in (!s!) do (set "_s=%%a")
- echo,AAA!_s!
- )
- endlocal&exit/b
复制代码
作者: gddsssko 时间: 2024-3-19 17:11
感谢各位大佬,大佬们真帅
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |