标题: [文件操作] 求助批处理:批量删掉前面相对名更短的相似名url文件 [打印本页]
作者: youxianwei 时间: 2023-1-30 14:53 标题: 求助批处理:批量删掉前面相对名更短的相似名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:23
本帖最后由 HOPE2021 于 2023-1-30 15:25 编辑
回复 1# youxianwei
您看看这样可不可以- @Echo Off & @Goto :Main
-
- :Main
-
- For /F "Delims=" %%_ in ('Dir /B *.url') Do (
- Echo.%%_ | FindStr /I ".ok\.url" || Del "%%_"
- )
-
- @Exit /B 0
复制代码
或者这样:- @Echo Off & @Goto :Main
-
- :Main
-
- For /F "Delims=" %%_ in ('Dir /B *.url') Do (
- If Exist "%%~n_ok.url" Del "%%_"
- )
-
- @Exit /B 0
复制代码
作者: youxianwei 时间: 2023-1-30 17:18
回复 2# HOPE2021
测试成功!谢谢~感谢!
作者: aloha20200628 时间: 2023-1-30 18:51
可用 findstr 的反向匹配功能简化代码- @echo off
- for /f "delims=" %%F in ('dir/b *.url^|findstr /vric:".*ok\.url$" ') do (del/q "%%~F")
复制代码
作者: youxianwei 时间: 2023-1-30 19:52
本帖最后由 youxianwei 于 2023-1-30 20:03 编辑
回复 2# HOPE2021
您好,还有疑问,就是有些没有ok结尾的无相似重复名的文件也会被误会强制删除?想保留怎么办?
1.url 该删
1ok.url
2.url 该删
2ok.url
3.url 会被勿删
4.url 会被勿删
。。。
作者: HOPE2021 时间: 2023-1-30 19:59
回复 5# youxianwei
请您试试看二楼的第二段代码
作者: youxianwei 时间: 2023-1-30 20:14
回复 6# HOPE2021
ok【子件去冗】能正常运行,是我自己加了个/s想搞【子孙件去冗】出现了不对的情况。。。。
作者: HOPE2021 时间: 2023-1-31 08:31
回复 7# youxianwei
这样可以吗?- @Echo Off & @Goto :Main
-
- :Main
-
- For /F "Delims=" %%_ in ('Dir /B /S *.url') Do (
- If Exist "%%~dpn_ok.url" Del "%%_"
- )
-
- @Exit /B 0
复制代码
作者: youxianwei 时间: 2023-1-31 10:47
本帖最后由 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的。
作者: qixiaobin0715 时间: 2023-1-31 11:19
回复 9# youxianwei - @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /s /b /a-d *ok.url') do (
- set str=%%~nxa
- set str=!str:ok.url=.url!
- set _!str!=true
- )
- for /f "delims=" %%i in ('dir /s /b /a-d *.url') do (
- if defined _%%~nxi (
- del "%%i"
- )
- )
复制代码
作者: youxianwei 时间: 2023-1-31 19:26
回复 10# qixiaobin0715
成功,谢谢感谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |