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

[文件操作] 求助,多种条件叠加,过滤后删除指定文件。

[复制链接]
发表于 2023-10-1 22:21:19 | 显示全部楼层
回复 30# smatenchen


    @echo off
set "self=%~nx0"
rename 1.txt aabb____1.txt
rename 2.log aabb____2.log
for /f "delims=" %%i in ('dir /b /a-d *aabb*.*') do rename "%%i" "aabb____%%i"

for %%i in (*) do (
set str=%%i
setlocal enabledelayedexpansion
if "!str:~0,4!" neq "aabb" (
if "!str!" neq "!self!" (
del "!str!"
)
)
endlocal
)

for %%i in (*) do (
set str=%%i
setlocal enabledelayedexpansion
if "!str!" neq "!self!" rename "!str!" "!str:~7!"
endlocal
)
发表于 2023-10-1 22:59:45 | 显示全部楼层
回复 31# Five66


    啊,顺序搞错了
rename 1.txt aabb____1.txt
rename 2.log aabb____2.log
for /f "delims=" %%i in ('dir /b /a-d *aabb*.*') do rename "%%i" "aabb____%%i"

换成

for /f "delims=" %%i in ('dir /b /a-d *aabb*.*') do rename "%%i" "aabb____%%i"

rename 1.txt aabb____1.txt
rename 2.log aabb____2.log
 楼主| 发表于 2023-10-2 08:53:23 | 显示全部楼层
回复 31# Five66

回复 32# Five66
   

感谢!

1,
你也发现了这个顺序bug。

2,
【if "!str!" neq "!self!" rename "!str!" "!str:~7!"】里的【"!str:~7!"】应该改成【"!str:~8!"】。

3,
代码这么多,不简捷,肯定不如【if "!str!" equ "!str:aabb=!"】的方案。不实用,探讨,拓展一下方案还行。

发表于 2023-10-3 10:38:42 | 显示全部楼层
是只要纯批的?就判断3个条件而已,or一下就行。
19  20 的不简洁吗
发表于 2023-10-3 14:52:21 | 显示全部楼层
powershell不够简洁吗
  1. powershell -c "Remove-Item * -Exclude 1.txt,2.log,*aabb*, '%~nx0'"
复制代码
 楼主| 发表于 2023-10-4 00:54:54 | 显示全部楼层
回复 34# pd1

回复 35# terse
   

感谢!

1,
纯批的感觉很舒服,的确是简单判断3个条件就行了,我之前想得复杂了。

2,
powershell的更简捷,可惜我还没学,不会用啊!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 10:33 , Processed in 0.017783 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表