[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 WHY 于 2018-10-20 20:28 编辑

test.ps1
  1. dir e:\Test\ -Include *[0-9].* -Recurse | ForEach{
  2.     $name = [regex]::Replace($_.BaseName, '\d{1,3}$', {param($a); $a.Value.PadLeft(3, '0')});
  3.     $name += $_.Extension;
  4.     ren -Literal $_.FullName -NewName $name -WhatIf;
  5. }
复制代码
Microsoft Windows [版本 10.0.17134.345]
(c) 2018 Microsoft Corporation。保留所有权利。

C:\Users\WHY>dir /b /s /a-d E:\Test\
E:\Test\a\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low08.doc
E:\Test\a\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low2.7z
E:\Test\a\1.LOG
E:\Test\a\a.txt
E:\Test\a\ccc1.jpg
E:\Test\b\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low08.doc
E:\Test\b\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low2.7z

C:\Users\WHY>PowerShell -ExecutionPolicy ByPass -f Desktop\Test.ps1
WhatIf: 正在目标“项: E:\Test\a\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low08.doc 目标: E:\Test\a\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low008.doc”上执行操作“重命名文件”。
WhatIf: 正在目标“项: E:\Test\a\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low2.7z 目标: E:\Test\a\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low002.7z”上执行操作“重命名文件”。
WhatIf: 正在目标“项: E:\Test\a\1.LOG 目标: E:\Test\a\001.LOG”上执行操作“重命名文件”。
WhatIf: 正在目标“项: E:\Test\a\ccc1.jpg 目标: E:\Test\a\ccc001.jpg”上执行操作“重命名文件”。
WhatIf: 正在目标“项: E:\Test\b\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low08.doc 目标: E:\Test\b\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low008.doc”上执行操作“重命名文件”。
WhatIf: 正在目标“项: E:\Test\b\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low2.7z 目标: E:\Test\b\0b3d9c8b-5a69-49c9-9f8d-a57f5ef0f883_mobile_low002.7z”上执行操作“重命名文件”。

C:\Users\WHY>

TOP

本帖最后由 WHY 于 2018-10-21 17:01 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. for /L %%i in (0 1 9) do set _%%i=1
  3. for /f "delims=" %%i in ('dir /b /a-d /s E:\Test\*') do (
  4.     set "Name=##%%~ni"
  5.     for /f "tokens=1-3 delims=/" %%n in ("!Name:~-3,1!/!Name:~-2,1!/!Name:~-1!") do (
  6.         if "!_%%n!.!_%%o!.!_%%p!" == ".1.1" (
  7.             echo;ren "%%i" "!Name:~2,-2!0!Name:~-2!%%~xi"
  8.         ) else if "!_%%o!.!_%%p!" == ".1" (
  9.             echo;ren "%%i" "!Name:~2,-1!00!Name:~-1!%%~xi"
  10.         )
  11.     )
  12. )
  13. pause
复制代码
不考虑特殊字符,不考虑重名问题。

TOP

回复 15# mofangti


    powershell 2.0版本中 rename-Item 不支持 -literalPath 参数,你可以改成 -Path,或者更新 PowerShell 版本。

TOP

返回列表