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

[文件操作] 【已解决】批处理如何删除文件夹(包括子文件夹)名字中的所有数字?

[复制链接]
发表于 2016-3-17 00:29:53 | 显示全部楼层 |阅读模式
本帖最后由 wzf1024 于 2016-3-18 16:31 编辑

想删除很多文件夹及子文件夹名字里的数字,找到个批处理,但是不能一次性同时操作子文件夹,要执行多次,如果不知道有多少级文件夹就难保证操作彻底。哪位大侠帮忙改改
  1. cls&setlocal  ENABLEDELAYEDEXPANSION
  2. @echo  将去掉文件夹名中的数字和点号1234567890 .
  3. @echo  请输入你额外需要去掉的字符并回车
  4. @echo  无也请回车,在这个界面里同样可以使用输入法:
  5. set /p var=
  6. for /f "delims=" %%a in ('dir /ad /b /s') do (
  7.     set name=%%~na
  8.     set name2=%%~xa
  9.     for %%j in (0 1 2 3 4 5 6 7 8 9 . !var!) do set name=!name:%%j=!
  10.     call ren "%%a" "!name!!name2!"
  11. )
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2016-3-17 01:07:26 | 显示全部楼层
本帖最后由 happy886rr 于 2016-3-18 16:34 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p str=请输入过滤字符(或直接回车):
  3. for /f "delims=" %%a in ('dir /ad /b /s ^|sort /r') do (
  4.         set s=%%~na
  5.         set k=1
  6.         for %%b in (0 1 2 3 4 5 6 7 8 9 . !str!) do (
  7.                 set s=!s:%%b=!
  8.                 if "!s!"=="" (set k=0)
  9.         )
  10.         if !k! equ 0 (
  11.                 echo 目录名不能为空
  12.                 echo “%%a”
  13.         ) else (
  14.                 ren "%%a" "!s!"||echo “%%a”
  15.         )
  16. )
  17. echo 执行完毕!
  18. pause>nul
复制代码
回复 1# wzf1024

评分

参与人数 2技术 +2 收起 理由
taofan712 + 1 乐于助人
wzf1024 + 1 乐于助人

查看全部评分

发表于 2016-3-17 11:18:04 | 显示全部楼层
借楼主代码一用,如果你的代码没问题的话,排个序就可以解决了
  1. cls&setlocal  ENABLEDELAYEDEXPANSION
  2. @echo  将去掉文件夹名中的数字和点号1234567890 .
  3. @echo  请输入你额外需要去掉的字符并回车
  4. @echo  无也请回车,在这个界面里同样可以使用输入法:
  5. set /p var=
  6. for /f "delims=" %%a in ('dir /ad /b /s ^|sort /r') do (
  7.     set name=%%~na
  8.     set name2=%%~xa
  9.     for %%j in (0 1 2 3 4 5 6 7 8 9 . !var!) do set name=!name:%%j=!
  10.     call ren "%%a" "!name!!name2!"
  11. )
复制代码

评分

参与人数 1技术 +1 收起 理由
wzf1024 + 1 乐于助人

查看全部评分

发表于 2016-3-17 21:08:51 | 显示全部楼层
楼主就这么轻描淡写的一问,要么是考虑不周,要么就是故意挖坑让人跳
如果重命名时出现重名的情况,你打算怎么办?
如果文件夹名全部由数字组成,你打算怎么办?
 楼主| 发表于 2016-3-18 15:33:32 | 显示全部楼层
本帖最后由 wzf1024 于 2016-3-18 15:35 编辑

回复 4# WHY


确如你所说的,这种情况我没考虑周全,你有什么办法解决?
 楼主| 发表于 2016-3-18 15:35:14 | 显示全部楼层
回复 2# happy886rr


    确如WHY所说的,存在重名及全部数字的文件夹名这种情况我没考虑周全,什么办法解决?
 楼主| 发表于 2016-3-18 15:35:47 | 显示全部楼层
回复 3# flyinnet9


    确如WHY所说的,存在重名及全部数字的文件夹名这种情况我没考虑周全,什么办法解决?
发表于 2016-3-18 16:09:29 | 显示全部楼层
本帖最后由 happy886rr 于 2016-3-18 16:35 编辑

回复 6# wzf1024
不用管那些,我的增强版(见原楼)都考虑了。
发表于 2016-3-18 22:33:11 | 显示全部楼层
回复 8# happy886rr


    不是我打击你,你的“增强版”并没有增强。

动不动就来个“完美版”、“增强版”,下一次要不要来个“绝世无双”版呢?
发表于 2016-3-18 22:37:05 | 显示全部楼层
如果文件夹重名,在文件夹后面补上 _A、_B ..._Z
同一文件夹中最多允许27次重复的子文件夹
  1. @echo off
  2. 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"
  3. for /f "delims=" %%i in ('dir /b /s /ad^|findstr "[^\\]*[0-9][^\\]*$"^|sort /r') do (
  4.     set "name=\%%~nxi"
  5.     cd /d "%%~dpi"
  6.     setlocal enabledelayedexpansion
  7.     for /l %%j in (0 1 9) do set "name=!name:%%j=!"
  8.     set "newName=!name!"
  9.     for %%j in (%s%) do (
  10.         if exist ".!newName!" set "newName=!name!_%%j"
  11.     )
  12.     for %%j in ("!newName:~1!") do (
  13.         endlocal
  14.         ren "%%i" "%%~nxj"
  15.     )
  16. )
  17. pause
复制代码

评分

参与人数 3技术 +3 收起 理由
taofan712 + 1 乐于助人
wzf1024 + 1 感谢分享
CrLf + 1 666

查看全部评分

发表于 2016-3-18 22:57:17 | 显示全部楼层
PowerShell可以这样:
  1. dir -Include *[0-9]* -Recurse | ?{$_ -is [System.IO.DirectoryInfo]} | `
  2. Sort FullName -Desc | %{
  3.     $Path = $_.FullName -replace '(.+\\).+$', '$1'
  4.     $Name = $_.Name -replace '\d+', ''
  5.     $n = 0; $NewName = $Name
  6.     while(test-Path -LiteralPath ($Path + $NewName)) {
  7.         $n1 = [math]::Truncate($n/26) + 65
  8.         $n2 = $n % 26 + 65; $n += 1
  9.         $NewName = $Name + '_' + [char][int]$n1 + [char]$n2
  10.     }
  11.     move -LiteralPath $_.FullName -Dest ($Path + $NewName)
  12. }
复制代码
发表于 2017-5-28 12:57:26 | 显示全部楼层
批处理如何删除文件夹(包括子文件夹)名字中的所有数字?能否反过来,【批处理如何删除文件夹(包括子文件夹)名字中的所有汉字?】,保留数字字母等字符,当然是从某一位开始,如:文件夹C11-2018-FG1312-3.0001睡了多久恢复了-你好,删除后面的文字及所有符号?不过一般情况后面只有汉字??
发表于 2017-5-28 13:00:40 | 显示全部楼层
批处理如何删除文件夹(包括子文件夹)名字中的所有汉字?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 20:20 , Processed in 0.081738 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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