Board logo

标题: [文件操作] 【已解决】请问以下cmd代码为什么无法删除指定后缀文件? [打印本页]

作者: jave000    时间: 2021-7-14 09:30     标题: 【已解决】请问以下cmd代码为什么无法删除指定后缀文件?

本帖最后由 jave000 于 2021-9-9 22:29 编辑
  1. for /R %%i in (*.b[0-9] *.bom *.err *.h *.idf *.log *.prt) do del /F /Q /S "%%i"
复制代码
我要删除若干文件,其中有一类的后缀为.b1,这个1可以是任何数字,我也不知道会不会出现两位数,但我这么写连一位数的都删不掉

求教
作者: qixiaobin0715    时间: 2021-7-14 09:45

回复 1# jave000
  1. @echo off
  2. set x=\.b[0-9][0-9]* \.bom \.err \.h \.idf \.log \.prt
  3. for /f "delims=" %%a in ('dir /b /s /a-d^|findstr /r /e "%x%"') do del /a /f /q "%%a"
  4. pause
复制代码

作者: qixiaobin0715    时间: 2021-7-14 09:49

一般表达式只有findstr才支持。
作者: jave000    时间: 2021-7-14 09:50

本帖最后由 jave000 于 2021-7-14 09:51 编辑

回复 2# qixiaobin0715


     谢谢,删除成功了,请问一下为什么写在括号里就不行?我的这个写法,只有.b1等文件没动静,其他都能正常删掉
作者: qixiaobin0715    时间: 2021-7-14 10:01

回复 4# jave000
2楼代码可以将变量x的值直接放在括号里,但不美观。
作者: jave000    时间: 2021-7-14 10:12

这样吗?
%\.b[0-9][0-9]* \.bom \.err \.h \.idf \.log \.prt%
是挺奇怪的
作者: jave000    时间: 2021-7-14 10:27

回复 7# qixiaobin0715


  这些我刚学到,一个.只能代表一个字符吧,我本来以为这里只能用*,因为1-∞,但是看你的代码.也能代表1-∞,另外这些完全不懂/b /s /a-d /a /f /q,正则表达里也没有这几个
FOR循环我刚开始学习论坛里的那个链接
谢谢
作者: qixiaobin0715    时间: 2021-7-14 10:28

回复 6# jave000
findstr /r /e "\.b[0-9][0-9]* \.bom \.err \.h \.idf \.log \.prt"
作者: qixiaobin0715    时间: 2021-7-14 10:31

回复 7# jave000
/b /s /a-d /a /f /q这几个参数可学习dir、del命令中的相关内容。
作者: qixiaobin0715    时间: 2021-7-14 10:43

回复 7# jave000
如果是刚接触bat,建议转投powershell,接受newswan的提议。http://www.bathome.net/thread-58889-1-6.html。我现在也在学习powershell,只不过对bat还是老有感情丢不下。
作者: jave000    时间: 2021-7-14 10:45

回复 9# qixiaobin0715


    好的,十分感谢,我查查
作者: Batcher    时间: 2021-7-14 11:06

回复 7# jave000


系统自带的命令行帮助文件ntcmds.chm里面既有讲解又有实例
http://bbs.bathome.net/thread-3926-1-1.html
作者: jave000    时间: 2021-7-14 14:05

回复 12# Batcher


    感谢,已收藏
作者: cmd1152    时间: 2021-7-18 14:23

回复 10# qixiaobin0715


    powershell我都不会用,因为我完全看不懂帮助文件
作者: qixiaobin0715    时间: 2021-7-19 13:52

活宝改头换面又回归了!!!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2