[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
楼主就这么轻描淡写的一问,要么是考虑不周,要么就是故意挖坑让人跳
如果重命名时出现重名的情况,你打算怎么办?
如果文件夹名全部由数字组成,你打算怎么办?

TOP

回复 8# happy886rr


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

动不动就来个“完美版”、“增强版”,下一次要不要来个“绝世无双”版呢?

TOP

如果文件夹重名,在文件夹后面补上 _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

评分人数

TOP

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. }
复制代码

TOP

返回列表