标题: [文件操作] 【已解决】批处理如何删除文件夹(包括子文件夹)名字中的所有数字? [打印本页]
作者: wzf1024 时间: 2016-3-17 00:29 标题: 【已解决】批处理如何删除文件夹(包括子文件夹)名字中的所有数字?
本帖最后由 wzf1024 于 2016-3-18 16:31 编辑
想删除很多文件夹及子文件夹名字里的数字,找到个批处理,但是不能一次性同时操作子文件夹,要执行多次,如果不知道有多少级文件夹就难保证操作彻底。哪位大侠帮忙改改- cls&setlocal ENABLEDELAYEDEXPANSION
- @echo 将去掉文件夹名中的数字和点号1234567890 .
- @echo 请输入你额外需要去掉的字符并回车
- @echo 无也请回车,在这个界面里同样可以使用输入法:
- set /p var=
- for /f "delims=" %%a in ('dir /ad /b /s') do (
- set name=%%~na
- set name2=%%~xa
- for %%j in (0 1 2 3 4 5 6 7 8 9 . !var!) do set name=!name:%%j=!
- call ren "%%a" "!name!!name2!"
- )
复制代码
作者: happy886rr 时间: 2016-3-17 01:07
本帖最后由 happy886rr 于 2016-3-18 16:34 编辑
- @echo off&setlocal enabledelayedexpansion
- set /p str=请输入过滤字符(或直接回车):
- for /f "delims=" %%a in ('dir /ad /b /s ^|sort /r') do (
- set s=%%~na
- set k=1
- for %%b in (0 1 2 3 4 5 6 7 8 9 . !str!) do (
- set s=!s:%%b=!
- if "!s!"=="" (set k=0)
- )
- if !k! equ 0 (
- echo 目录名不能为空
- echo “%%a”
- ) else (
- ren "%%a" "!s!"||echo “%%a”
- )
- )
- echo 执行完毕!
- pause>nul
复制代码
回复 1# wzf1024
作者: flyinnet9 时间: 2016-3-17 11:18
借楼主代码一用,如果你的代码没问题的话,排个序就可以解决了- cls&setlocal ENABLEDELAYEDEXPANSION
- @echo 将去掉文件夹名中的数字和点号1234567890 .
- @echo 请输入你额外需要去掉的字符并回车
- @echo 无也请回车,在这个界面里同样可以使用输入法:
- set /p var=
- for /f "delims=" %%a in ('dir /ad /b /s ^|sort /r') do (
- set name=%%~na
- set name2=%%~xa
- for %%j in (0 1 2 3 4 5 6 7 8 9 . !var!) do set name=!name:%%j=!
- call ren "%%a" "!name!!name2!"
- )
复制代码
作者: WHY 时间: 2016-3-17 21:08
楼主就这么轻描淡写的一问,要么是考虑不周,要么就是故意挖坑让人跳
如果重命名时出现重名的情况,你打算怎么办?
如果文件夹名全部由数字组成,你打算怎么办?
作者: wzf1024 时间: 2016-3-18 15:33
本帖最后由 wzf1024 于 2016-3-18 15:35 编辑
回复 4# WHY
确如你所说的,这种情况我没考虑周全,你有什么办法解决?
作者: wzf1024 时间: 2016-3-18 15:35
回复 2# happy886rr
确如WHY所说的,存在重名及全部数字的文件夹名这种情况我没考虑周全,什么办法解决?
作者: wzf1024 时间: 2016-3-18 15:35
回复 3# flyinnet9
确如WHY所说的,存在重名及全部数字的文件夹名这种情况我没考虑周全,什么办法解决?
作者: happy886rr 时间: 2016-3-18 16:09
本帖最后由 happy886rr 于 2016-3-18 16:35 编辑
回复 6# wzf1024
不用管那些,我的增强版(见原楼)都考虑了。
作者: WHY 时间: 2016-3-18 22:33
回复 8# happy886rr
不是我打击你,你的“增强版”并没有增强。
动不动就来个“完美版”、“增强版”,下一次要不要来个“绝世无双”版呢?
作者: WHY 时间: 2016-3-18 22:37
如果文件夹重名,在文件夹后面补上 _A、_B ..._Z
同一文件夹中最多允许27次重复的子文件夹- @echo off
- set "s=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
- for /f "delims=" %%i in ('dir /b /s /ad^|findstr "[^\\]*[0-9][^\\]*$"^|sort /r') do (
- set "name=\%%~nxi"
- cd /d "%%~dpi"
- setlocal enabledelayedexpansion
- for /l %%j in (0 1 9) do set "name=!name:%%j=!"
- set "newName=!name!"
- for %%j in (%s%) do (
- if exist ".!newName!" set "newName=!name!_%%j"
- )
- for %%j in ("!newName:~1!") do (
- endlocal
- ren "%%i" "%%~nxj"
- )
- )
- pause
复制代码
作者: WHY 时间: 2016-3-18 22:57
PowerShell可以这样:- dir -Include *[0-9]* -Recurse | ?{$_ -is [System.IO.DirectoryInfo]} | `
- Sort FullName -Desc | %{
- $Path = $_.FullName -replace '(.+\\).+$', '$1'
- $Name = $_.Name -replace '\d+', ''
- $n = 0; $NewName = $Name
- while(test-Path -LiteralPath ($Path + $NewName)) {
- $n1 = [math]::Truncate($n/26) + 65
- $n2 = $n % 26 + 65; $n += 1
- $NewName = $Name + '_' + [char][int]$n1 + [char]$n2
- }
- move -LiteralPath $_.FullName -Dest ($Path + $NewName)
- }
复制代码
作者: 172043209 时间: 2017-5-28 12:57
批处理如何删除文件夹(包括子文件夹)名字中的所有数字?能否反过来,【批处理如何删除文件夹(包括子文件夹)名字中的所有汉字?】,保留数字字母等字符,当然是从某一位开始,如:文件夹C11-2018-FG1312-3.0001睡了多久恢复了-你好,删除后面的文字及所有符号?不过一般情况后面只有汉字??
作者: 172043209 时间: 2017-5-28 13:00
批处理如何删除文件夹(包括子文件夹)名字中的所有汉字?
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |