[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 WHY 于 2017-12-15 20:42 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d /s D:\123\*.jpg ^| findstr /i "D:\\123\\[^\\]*\\[^\\]*\\[^\\]*$"') do (
  4.         if not "!s!" == "%%~dpi" (
  5.                 set n=1
  6.                 if defined s echo; rd /s /q "!s!"
  7.         ) else (set /a n+=1)
  8.         for %%j in ("%%~dpi.") do echo;move "%%i" "%%~fj(!n!)%%~xi"
  9.         set "s=%%~dpi"
  10. )
  11. if defined s echo; rd /s /q "!s!"
  12. pause
复制代码
1

评分人数

    • wpy4206: 乐于助人,我没有测试成功,我会继续学习的技术 + 1

TOP

D:\123
改成你的真实的目录名,D:\\123也改成真实的目录名(注意是双斜杠)

TOP

Microsoft Windows [版本 10.0.16299.64]
(c) 2017 Microsoft Corporation。保留所有权利。

C:\Users\WHY>dir /b /a-d /s D:\123\*.jpg
D:\123\img110.jpg
D:\123\JC001\sss\105.jpg
D:\123\JC001\sss\106.jpg
D:\123\JC001\sss\107.jpg
D:\123\JC002\img110 - 副本.jpg
D:\123\JC002\sss\345720170221013.jpg
D:\123\JC002\sss\567820170421010.jpg
D:\123\JC003\img101.jpg
D:\123\JC003\abc\img109 - 副本.jpg
D:\123\JC003\abc\img110 - 副本.jpg

C:\Users\WHY>E:\Test\Test.bat
move "D:\123\JC001\sss\105.jpg" "D:\123\JC001\sss(1).jpg"
move "D:\123\JC001\sss\106.jpg" "D:\123\JC001\sss(2).jpg"
move "D:\123\JC001\sss\107.jpg" "D:\123\JC001\sss(3).jpg"
rd /s /q "D:\123\JC001\sss\"
move "D:\123\JC002\sss\345720170221013.jpg" "D:\123\JC002\sss(1).jpg"
move "D:\123\JC002\sss\567820170421010.jpg" "D:\123\JC002\sss(2).jpg"
rd /s /q "D:\123\JC002\sss\"
move "D:\123\JC003\abc\img109 - 副本.jpg" "D:\123\JC003\abc(1).jpg"
move "D:\123\JC003\abc\img110 - 副本.jpg" "D:\123\JC003\abc(2).jpg"
rd /s /q "D:\123\JC003\abc\"
请按任意键继续. . .


我这里没有问题。

TOP

回复 7# wpy4206


    你应该知道 echo; 的作用吧?把它删掉好了。

TOP

本帖最后由 WHY 于 2017-12-17 23:24 编辑
  1. $arr = dir D:\123\*\*\*.jpg | ?{$_ -is [IO.FileInfo]};
  2. $arr | ForEach{
  3.     If($fd -ne $_.Directory.FullName){
  4.         $n = 0;
  5.         If(Test-Path Variable:fd){rd -LiteralPath $fd -Recurse -Force}
  6.     }
  7.     $fd = $_.Directory.FullName;
  8.     mv -LiteralPath $_.FullName -Des ($fd + '(' + (++$n) + ').jpg') -Force;
  9. }
  10. If(Test-Path Variable:fd){rd -LiteralPath $fd -Recurse -Force}
复制代码
1

评分人数

    • wpy4206: 感谢给帖子标题标注[已解决]字样技术 + 1

TOP

返回列表