[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
使用attrib设置文件属性,使用del删除指定属性文件,这样只用两个命令
bat小白,请多指教!谢谢!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set "1.txt=1"
  3. set "2.log=1"
  4. set "%~nx0=1"
  5. for /f "delims=" %%i in ('dir /b /a-d') do (
  6.      set "str=%%i"
  7.      if not defined !str! (
  8.         if "!str!" equ "!str:aabb=!" del "!str!"
  9.      )
  10. )
复制代码

TOP

回复 1# smatenchen

用第3方工具gawk( http://bcn.bathome.net/tool/4.1.0/gawk.exe )在命令行窗口直接执行可实现:
  1. dir /b|gawk "BEGIN{a[\"1.txt\"];a[\"2.log\"];a[\"gawk.exe\"]}!/aabb/{if($0 in a)next;print \"del \042\"$0\"\042\"}"|cmd.exe
复制代码

TOP

来了,没有dir for del   
  1. powershell -c "ls |%{if($_.Name -eq '1.txt' -or $_.Name -eq '2.log' -or $_.Name -match 'aabb'){}else{Remove-Item $_}}"
复制代码

TOP

回复 17# qixiaobin0715


    【出题挑战】版块的本意是自己已经有一个非常不错的甚至非常优秀的代码,暂时先不发出来,跟大家切磋一下题目
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 qixiaobin0715 于 2023-10-1 08:11 编辑

回复 9# smatenchen
真是搞不懂!为什么非要把问题搞复杂化呢,有什么讲究吗?
真应了一句话,叫做“有困难要上,没有困难制造困难也要上”。
好吧,那就在楼主的基础上再增加些难度算了,不使用dir、for、del。
亦或你是在出题吗,那就移步“出题挑战”栏吧。

TOP

回复 13# smatenchen


    if "!str:aabb=1!" neq "!str!"

TOP

回复 13# smatenchen


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

TOP

回复 12# ppll2030


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

好细心啊!了不起啊!

TOP

回复 10# 77七 qixiaobin0715 hlzj88


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

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

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

TOP

回复 4# hlzj88

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

TOP

回复 4# hlzj88 qixiaobin0715 77七


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

找到原因了吗?

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

回复 8# 77七 qixiaobin0715


感谢!

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

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

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

返回列表