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

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

本帖最后由 smatenchen 于 2023-10-1 13:39 编辑



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


方案2:
{条件,
1,同一目录下的一堆文件,1.txt,2.log,3.dat,???aabbxxx???????.gif,xxxxxaabbxxx??????.jpg,c.ini,d.dll,e.inf,……。
2,文件名中x,?都表示是未知字符,……表示还有很多其它文件。


要求,
1,保留1.txt,2.log,和文件名中包含aabb的文件,其余的删除。
2,不使用find,findstr,move。}


方案1:
{条件,
1,同一目录下的一堆文件,1.txt,2.log,3.dat,aabbxxx???????.gif,aabbxxx??????.jpg,c.ini,d.dll,e.inf,……。
2,文件名中x,?都表示是未知字符,……表示还有很多其它文件。

要求,
1,保留1.txt,2.log,和aabb开头的文件,其余的删除。
2,不使用find,findstr,move。}


感谢!

回复 1# smatenchen qixiaobin0715 77七 BAT221110 hfxiang

求助!感谢!

TOP

回复 1# smatenchen terse pd1 qixiaobin0715 hfxiang idwma

求助!感谢!

TOP

本帖最后由 hlzj88 于 2023-9-30 22:18 编辑
  1. 有问题,不可用
  2. md a
  3. move /y 1.txt a\
  4. move /y 2.log a\
  5. move /y aabb*.* a\
  6. for /f "delims=" %%i in ('dir /b/oe "*.*"') do if %%i==%~nx0 (echo,) else del /q "%%i"
  7. move /y %~dp0a\*.* %~dp0
  8. rd /q a
  9. pause
复制代码
为什么同时把a\的文件也删除了呢?
目的,学习批处理

TOP

想法不错,但是第5行bat文件也删除了,后面的命令不知是否还能执行?

TOP

回复 4# hlzj88

不能移动文件,用for命令吧。

TOP

回复 5# qixiaobin0715

不能移动文件,用for命令吧。

TOP

  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. for /f "delims=" %%i in ('dir /b /a-d ^|find /v "%~nx0"') do (
  4. set str=%%i
  5. setlocal enabledelayedexpansion
  6. if /i "!str!" neq "1.txt" (
  7. if /i "!str!" neq "2.log" (
  8. if "!str:~0,4!" neq "aabb" (
  9. del "!str!"
  10. )
  11. )
  12. )
  13. endlocal
  14. )
  15. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 8# 77七 qixiaobin0715


感谢!

用了find,findstr,move,问题就很简单了。

还是用for加其它,如dir硬扛吧!

TOP

回复 9# smatenchen


   

  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. set me=%~nx0
  4. for %%i in (*) do (
  5. set str=%%i
  6. setlocal enabledelayedexpansion
  7. if /i "!str!" neq "1.txt" (
  8. if /i "!str!" neq "2.log" (
  9. if "!str:~0,4!" neq "aabb" (
  10. if "!str!" neq "!me!" (
  11. del "!str!"
  12. )
  13. )
  14. )
  15. )
  16. endlocal
  17. )
  18. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 4# hlzj88 qixiaobin0715 77七


【为什么同时把a\的文件也删除了呢?】

找到原因了吗?

TOP

回复 4# hlzj88

你没有加去除目录参数。*.*等同于*,会把目录也一并罗列出来了。

TOP

回复 10# 77七 qixiaobin0715 hlzj88


【if "!str:~0,4!" neq "aabb" (】

巧妙啊!充分利用了文件名特征。我之前没想到这个啊!

再增加难度,aabb在文件名中出现的位置不确定,使用"!str:~0,4!"已不可行了。
这又该如何?

TOP

回复 12# ppll2030


【你没有加去除目录参数。*.*等同于*,会把目录也一并罗列出来了。】

好细心啊!了不起啊!

TOP

回复 13# smatenchen


   如果是学习的话,可以去教程版块。请不要来回编辑1楼,并且把原来的问题编辑掉。
bat小白,请多指教!谢谢!

TOP

返回列表