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

[文件操作] 批处理如何批量删除文件名上序号?

文件名格式:1.*****,2.******,3.*****,求问如何批量删除里面的"数字."?

回复 1# yunxiyang


    删除里面的"数字."之后剩下的文件名是否存在重名的可能性?如有重名,如何处理?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /a-d ^|findstr /rbc:"[0-9][0-9]*\." ^|find /v "%~nx0"') do (
  4. set n=%%i
  5. setlocal enabledelayedexpansion
  6. ren "!n!" "!n:*.=!"
  7. endlocal
  8. )
  9. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 3# 77七


    试了一下,很成功,太感谢了

TOP

回复 2# Batcher


    刚试了下楼下的代码,重名的只会生效一个,另一个不变

TOP

回复 5# yunxiyang


    是的。如果有重名的需要怎样处理,这个你的把需求描述清除。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 aloha20200628 于 2024-8-14 13:01 编辑

回复 1# yunxiyang

如果判断有重名的后果,将会放弃本次更名,继续下一个...
若再有一个针对重名的更名策略,就会被‘打回原形’,还不如不更了...
  1. @echo off &for /f "tokens=1* delims=." %%a in (
  2.      ' dir /b/a-d^|findstr /rbc:"[0-9][0-9]*\." '
  3. ) do if exist "%%b" (echo,"更名为 %%b 会导致重名 〉本次更名被取消...") else (ren "%%a.%%b" "%%b")
  4. pause&exit/b
复制代码
1

评分人数

TOP

回复 7# aloha20200628


    哈哈,大佬总结到位!
关于大佬代码中的判断是否存在重名,也不如不判断了,判断了没有提示,不判断则遇到重名cmd会报错提示!
bat小白,请多指教!谢谢!

TOP

本帖最后由 qixiaobin0715 于 2024-8-14 09:31 编辑

出现重名文件时加顺序号重命名,按Windows的默认规则命名重名文件,比如“a.txt” “a (2).txt” “a (3).txt”...,这里来个简易版,假如各个重名不会超过10个:
  1. @echo off
  2. for /f "tokens=1* delims=." %%i in ('dir /b /a-d^|findstr /b "[1-9][0-9]*\..*\."') do (
  3.     if exist "%%j" (
  4.         set n=1
  5.         for /l %%k in (2,1,10) do (
  6.             if not exist "%%~nj (%%k)%%~xj" (
  7.                 if defined n (
  8.                     set n=
  9.                     ren "%%i.%%j" "%%~nj (%%k)%%~xj"
  10.                 )
  11.             )
  12.         )
  13.     ) else (
  14.         ren "%%i.%%j" "%%j"
  15.     )
  16. )
  17. pause
复制代码
未经测试,可能会有问题,大体思路应当没问题。
findstr要搜索的字符项([1-9][0-9]*\..*\.)后面比3楼的([0-9][0-9]*\.)多出了一部分,是为了防止当前目录存在类似1.txt这样的文件被误配。

TOP

本帖最后由 aloha20200628 于 2024-8-14 13:44 编辑

回复 8# 77七
回复 1# yunxiyang

给7楼代码加了重名提示,善始善终吧...

TOP

返回列表