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

[文件操作] 求助批处理:批量删掉前面相对名更短的相似名url文件

本帖最后由 youxianwei 于 2023-1-30 19:58 编辑

大神求助子件并冗:批量删掉前面相对名更短的相似名url文件,只保留因为后缀ok而名更长的url文件

百度一下,你就知道.url             ✖要删除
百度一下,你就知道ok.url
腾讯视频.url                虽然没有ok结尾但不要被误会删除!!!
谷歌搜索.url           ✖要删除
谷歌搜索ok.url
爱奇艺视频.url                虽然没有ok结尾但不要被误会删除!!!
。。。。。。

本帖最后由 HOPE2021 于 2023-1-30 15:25 编辑

回复 1# youxianwei
您看看这样可不可以
  1. @Echo Off & @Goto :Main
  2. :Main
  3. For /F "Delims=" %%_ in ('Dir /B *.url') Do (
  4. Echo.%%_ | FindStr /I ".ok\.url" || Del "%%_"
  5. )
  6. @Exit /B 0
复制代码
或者这样:
  1. @Echo Off & @Goto :Main
  2. :Main
  3. For /F "Delims=" %%_ in ('Dir /B *.url') Do (
  4. If Exist "%%~n_ok.url" Del "%%_"
  5. )
  6. @Exit /B 0
复制代码
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

回复 2# HOPE2021


    测试成功!谢谢~感谢!

TOP

可用 findstr 的反向匹配功能简化代码
  1. @echo off
  2. for /f "delims=" %%F in ('dir/b *.url^|findstr /vric:".*ok\.url$" ') do (del/q "%%~F")
复制代码

TOP

本帖最后由 youxianwei 于 2023-1-30 20:03 编辑

回复 2# HOPE2021


您好,还有疑问,就是有些没有ok结尾的无相似重复名的文件也会被误会强制删除?想保留怎么办?
1.url        该删
1ok.url  
2.url         该删
2ok.url
3.url     会被勿删
4.url       会被勿删
。。。

TOP

回复 5# youxianwei
请您试试看二楼的第二段代码
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

回复 6# HOPE2021


    ok【子件去冗】能正常运行,是我自己加了个/s想搞【子孙件去冗】出现了不对的情况。。。。

TOP

回复 7# youxianwei
这样可以吗?
  1. @Echo Off & @Goto :Main
  2. :Main
  3. For /F "Delims=" %%_ in ('Dir /B /S *.url') Do (
  4. If Exist "%%~dpn_ok.url" Del "%%_"
  5. )
  6. @Exit /B 0
复制代码
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

本帖最后由 youxianwei 于 2023-1-31 11:27 编辑

回复 8# HOPE2021
感谢回答,还是只能处理夹内重复的url,无法处理夹间重复的url。
假设有两个文件夹,一个旧夹,一个新夹,新夹比旧夹有更新也有重复,旧夹名已后缀ok的文件如果在新夹中重复的url希望清理掉,那新夹中剩下的就是完全不同于旧夹中的最新url。


【旧夹】
---1.url        会删
---1ok.url  
---2.url         会删
---2ok.url
---3.url         不会被勿删
---4.url        不会被勿删
【新夹】
---1.url            【与旧夹重复想要删却不会被删】!!!
---2.url            【与旧夹重复想要删却不会被删】!!!
---a.url         会删
---aok.url      

不过我想了想,放在同一个文件夹里清理后,按最新修改时间区分也是能分辨出哪些是全新的url的。

TOP

回复 9# youxianwei
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /s /b /a-d *ok.url') do (
  4.     set str=%%~nxa
  5.     set str=!str:ok.url=.url!
  6.     set _!str!=true
  7. )
  8. for /f "delims=" %%i in ('dir /s /b /a-d *.url') do (
  9.     if defined _%%~nxi (
  10.         del "%%i"
  11.     )
  12. )
复制代码

TOP

回复 10# qixiaobin0715


    成功,谢谢感谢!

TOP

返回列表