Board logo

标题: [文件操作] 【已解决】批处理删除某个目录下指定的文件 [打印本页]

作者: irresolute    时间: 2009-3-12 14:30     标题: 【已解决】批处理删除某个目录下指定的文件

如果”F:\作业“文件夹及很多它的子文件夹里面都有“谁骂本人.doc”这个文件,你一个个找到然后删除是不是太麻烦?我就写这几句能解决问题了。能显示位置和确认一下,但有多此一举之嫌。
@echo off
setlocal enabledelayedexpansion
for /r F:\作业  %%i in (谁骂本人.doc)  do (
echo %%~fi
if exist %%~fi  (
set /p c=输入y后将删除"%%~fi":
if !c!==y del /q/f "%%~fi" && echo success delete
)
)
pause>nul

[ 本帖最后由 irresolute 于 2009-3-12 22:37 编辑 ]
作者: batman    时间: 2009-3-12 15:56

楼上是典型的乱用for /r,再说批处理是难以对doc文件操作的,除非是cmd下生成的纯doc文件。
作者: irresolute    时间: 2009-3-12 19:52     标题: 回ls

兄弟:你没看楚就说了。
如果”F:\作业“文件夹及很多它的子文件夹里面都有“谁骂本人.doc”这个文件,你一个个找到然后删除是不是太麻烦?我就写这几句能解决问题了。当然有比这更简单的解决办法,只是我不会。
作者: Batcher    时间: 2009-3-12 20:04     标题: 回复 3楼 的帖子

建议把此楼描述更新到顶楼,以便更多人查看。

本版规则
1、求代码、寻求代码解释、探讨代码得失的帖子均可发在本版块,其余话题禁止在本版讨论;
2、求助时,务必在顶楼一次性把问题交代清楚;若文字难以表述,请配图说明,或是上传附件;但是,一切操作应从节约论坛资源的角度出发,能文字说明清楚的就无需再发图片,小图能说明问题的尽量不截全图,在不影响效果的前提下尽量压缩图片及附件;
3、所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;


Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
作者: Batcher    时间: 2009-3-12 20:07

这行代码能实现楼主的意思不?
  1. del /s /f /q "F:\作业\*谁骂本人.doc"
复制代码

作者: irresolute    时间: 2009-3-12 20:16     标题: 稍改了下

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p c=请输入要删除的文件名:
  4. for /r F:\作业  %%i in (%c%)  do (
  5. echo %%~fi
  6. if exist %%~fi  (
  7. set /p c=输入y后将删除"%%~fi":
  8. if !c!==y del /q/f "%%~fi" && echo success delete
  9. )
  10. )
  11. pause>nul
复制代码
删除时能确认下
作者: Batcher    时间: 2009-3-12 20:30     标题: 回复 6楼 的帖子

这样不是也能确认么?
  1. del /s /p "F:\作业\*谁骂本人.doc"
复制代码

作者: irresolute    时间: 2009-3-12 22:36     标题: 谢高手们指导

其实做之前我也想过/s参数

删除一个或数个文件。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

  names         指定一个或数个文件或目录列表。通配符可被用来
                删除多个文件。如果指定了一个目录,目录中的所
                有文件都会被删除。

  /P            删除每一个文件之前提示确认。
  /F            强制删除只读文件。
  /S            从所有子目录删除指定文件。
  /Q            安静模式。删除全局通配符时,不要求确认。
  /A            根据属性选择要删除的文件。
  attributes      R  只读文件                     S  系统文件
                  H  隐藏文件                     A  存档文件
                  -  表示“否”的前缀

如果命令扩展名被启用,DEL 和 ERASE 会如下改变:

/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件。




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