• 广州市第十五届人大常委会会议网络直播 2019-04-20
  • “西瓜足迹”瞎掰与“晒的虚荣” 2019-04-20
  • 习近平两会“典”亮新时代 2019-04-07
  • 中国足球,就是笑博士的“责权利平滑对接”改革的必然结果! 2019-04-03
  • 重庆高校陆续公布招生计划、专业设置情况和新政策 2019-04-03
  • 新时代 新气象 新作为 2019-03-30
  • 《中国地方志佛道教文献汇纂》——开辟佛道教研究新领域 2019-03-29
  • 拉萨市墨竹工卡县全力打造“绿色矿山” 2019-03-29
  • 习近平要求把这项工作作为重大政治任务 2019-03-24
  • 充分发挥重要平台和有效载体作用 以特色小镇建设促进乡村振兴 2019-03-18
  • 脸每天都洗,但你真的洗对了吗? 2019-03-18
  • 港珠澳大桥珠海口岸停车场智慧停车系统启用在即 2019-03-14
  • 以实际行动诠释忠诚 以实干实政维护核心 2019-03-14
  • 天津市津南区严打校园周边“五毛食品” 2019-03-11
  • 设计众议院:新时代消费观念造就的全新第八代凯美瑞 2019-03-11
  • 批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
    [批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
    返回列表 发帖

    粤十一选五遗漏结果:[文件操作] [已解决]批处理如何全盘搜索批量删除几类文件,但要排除某些目录?

    本帖最后由 locoman 于 2019-3-17 00:25 编辑

    如何实现:全盘搜索批量删除几类文件,但要排除某些目录。

    需求:
    1. 想全盘搜索*.XLS、*.DOC、*.JPG文件,并将其删除;
    2. 但,在执行删除时,又不能删除某些目录内的该几类文件,比如:c:\windows、d:\办公保存、e:\档案保存,等目录下的*.XLS、*.DOC、*.JPG不能删除。

    ——谢谢大神们帮助我??!
    1

    广东十一选五计划软件 www.qe-ar.com 评分人数

      • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

    a.bat
    1. @echo off
    2. powershell -command "[email protected]('c:\windows','d:\办公保存','e:\档案保存');[System.IO.DriveInfo]::GetDrives()|ForEach-Object{Get-ChildItem -LiteralPath $_.Name -Filter *.* -Directory|Where-Object{$_.FullName -notin $aExcludes}|ForEach-Object{Remove-Item -LiteralPath $_ -Filter *.* -Include *.xls,*.doc,*.jpg -Recurse  -WhatIf}}"
    复制代码
    测试是否是想要删除的文件,然后再删。
    联系请 mailto:[email protected]

    TOP

    回复 2# flashercs


       如果批量删除a文件夹及子文件夹下1.bat,代码怎么写?

    TOP

    回复 2# flashercs

    非常感谢您的热情帮助!
    因为,主贴的删除需求涉及面很广,且是直接删除了未进入回收站,风险特别大。
    所以,我必须向您请教清楚才敢去实测。请见谅!
    ——
    1.您这句是啥意思?——“测试是否是想要删除的文件,然后再删”。
    2.您这个代码,能确保需要?;さ哪柯迹╟:\windows、d:\办公保存、e:\档案保存)不会有删除操作吗?

    TOP

    回复 4# locoman


        这代码目前不会删除任何文件的,只是会告诉你将来会删除哪些文件!
    若认为删除的文件是正确的,要执行真正删除,请删掉代码后面的 “-WhatIf” 后保存并运行。
    联系请 mailto:[email protected]

    TOP

    回复 5# flashercs
        谢谢您不厌其烦的帮助我??!谢谢您!
    我水平有限,是因为工作中需要,而且是想以批处理文件形式交给同事们去运行完成需求。
    将您的代码保存为“指定删除.bat”,运行报错。
    有个帖子也曾简介了一下powershell与BAT混用的事儿,但我搞不来。
    我就想请您继续帮助我搞成一键点击执行的一个东东(bat),否则,同事们拿到手也搞不来的。
    拜托了!

    报错——
    C:\Users\Administrator.AFOHQ-712210916\Desktop\指定删除>指定删除.bat
    必须在“-”运算符的右侧提供值表达式。
    所在位置 行:1 字符: 182
    + [email protected]('c:\windows','d:\办公保存','e:\档案保存');[System.IO.DriveInfo]:
    :GetDrives()|ForEach-Object{Get-ChildItem -LiteralPath $_.Name -Filter *.* -Dir
    ectory|Where-Object{$_.FullName - <<<< notin $aExcludes}|ForEach-Object{Remove-
    Item -LiteralPath $_ -Filter *.* -Include *.xlsx,*.doc,*.jpg,*.bmp -Recurse  -W
    hatIf}}
        + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordEx
       ception
        + FullyQualifiedErrorId : ExpectedValueExpression

       

    TOP

    回复 6# locoman

    用bat也许更好,下面纯批处理,请保存为 文件名.bat
    1. @echo off
    2. setlocal EnableDelayedExpansion
    3. REM 设置要排除的目录列表,用双引号包括,以空格分割.
    4. set dirsExclude="c:\windows" "d:\办公保存" "e:\档案保存"
    5. REM 要删除的文件扩展名列表,用双引号包括,以空格分割.
    6. set exts="*.xls" "*.doc" "*.jpg"
    7. echo 全盘搜索中,请稍候...
    8. for /f "tokens=1*" %%A in ('fsutil fsinfo drives') do (
    9.   for %%D in (%%B) do (
    10.     pushd "%%D"
    11.     for /f "delims=" %%E in ('dir /ad-h-s /b') do (
    12.       set flag=1
    13.       for %%F in (%dirsExclude%) do (
    14.         if /i "%%~fE"==%%F set flag=0
    15.       )
    16.         if !flag!==1 (
    17.           for /f "delims=" %%G in ('where /r "%%~fE" /f %exts% 2^>nul') do (
    18.             REM 若要真正删除文件,请去掉下面这行的 "echo"
    19.             echo del /f /q %%G
    20.           )
    21.         )
    22.       )
    23.     popd
    24.     )
    25.   )
    26. )
    27. endlocal
    28. pause
    29. exit /b
    复制代码
    联系请 mailto:[email protected]

    TOP

    本帖最后由 locoman 于 2019-3-15 11:16 编辑

    回复 7# flashercs

    谢谢您的热情热心??!
    佩服您的精湛技艺??!
    前日,家中有要事耽搁,未能好好测试,不好意思!


    我简单测试了一下 七楼的代码,您的这个BAT完全按照我的需要能列出需要的文件出来。:victory:

    ——那么,我现在想继续按您的思路,修改为:将列出的路径及文件名保存到一个TXT文件去,如保存到:d:\DEL_list.txt


    19行修改为:
    echo %%G >>d:\DEL_list.txt

    ——能实现保存。但有个缺陷:再次运行BAT时,并没有将上次已经存在的d:\DEL_list.txt的内容清空再写入而造成重复内容了。

    ——但是,我更想进一步完善,需要您再帮我对此优化下,谢谢!

    1.首先,我在19行的修改实现,不一定规范标准、效率不一定高;
    2.保存到d:\DEL_list.txt时,应该首先有个判断:d:\DEL_list.txt是否存在,存在的话,须先将其内容清空再写入。


    ——真不好意思多次麻烦您,但为了把一件事搞得更完美和借此向您把问题学习清楚,只能多多麻烦请教了,谢谢您??!

    TOP

    回复 8# locoman
    1. @echo off
    2. setlocal EnableDelayedExpansion
    3. REM 设置要排除的目录列表,用双引号包括,以空格分割.
    4. set dirsExclude="c:\windows" "d:\办公保存" "e:\档案保存"
    5. REM 要删除的文件扩展名列表,用双引号包括,以空格分割.
    6. set exts="*.xls" "*.doc" "*.jpg"
    7. REM 设置保存文件路径
    8. set outFile="d:\DEL_list.txt"
    9. echo 全盘搜索中,请稍候...
    10. (
    11.   for /f "tokens=1*" %%A in ('fsutil fsinfo drives') do (
    12.     for %%D in (%%B) do (
    13.       pushd "%%D"
    14.       for /f "delims=" %%E in ('dir /ad-h-s /b') do (
    15.         set flag=1
    16.         for %%F in (%dirsExclude%) do (
    17.           if /i "%%~fE"==%%F set flag=0
    18.         )
    19.           if !flag!==1 (
    20.             for /f "delims=" %%G in ('where /r "%%~fE" /f %exts% 2^>nul') do (
    21.               echo %%G
    22.             )
    23.           )
    24.         )
    25.       popd
    26.       )
    27.     )
    28.   )
    29. )>%outFile%
    30. endlocal
    31. pause
    32. exit /b
    复制代码
    联系请 mailto:[email protected]

    TOP

    本帖最后由 locoman 于 2019-3-16 14:59 编辑

    回复 9# flashercs

    谢谢您一直热情帮助解决!
    将9楼的代码保存为BAT运行后,并没有实现将搜索结果保存到TXT文件,因为,搜索完成后D盘没有“DEL_list.txt”文件。

    另外,7楼和9楼的代码,在执行搜索完成后,都会在黑窗口中最后显示一句“设备未就绪?!?,不明白这是啥意思?

    TOP

    1. @echo off
    2. setlocal EnableDelayedExpansion
    3. REM 设置要排除的目录列表,用双引号包括,以空格分割.
    4. set dirsExclude="c:\windows" "d:\办公保存" "e:\档案保存"
    5. REM 要删除的文件扩展名列表,用双引号包括,以空格分割.
    6. set exts="*.xls" "*.doc" "*.jpg"
    7. REM 设置保存文件路径
    8. set outFile="d:\DEL_list.txt"
    9. echo 全盘搜索中,请稍候...
    10. (
    11.   for /f "tokens=1*" %%A in ('fsutil fsinfo drives') do (
    12.     for %%D in (%%B) do (
    13.       pushd "%%D"
    14.       for /f "delims=" %%E in ('dir /ad-h-s /b') do (
    15.         set flag=1
    16.         for %%F in (%dirsExclude%) do (
    17.           if /i "%%~fE"==%%F set flag=0
    18.         )
    19.           if !flag!==1 (
    20.             for /f "delims=" %%G in ('where /r "%%~fE" /f %exts% 2^>nul') do (
    21.               echo %%G
    22.             )
    23.           )
    24.         )
    25.       popd
    26.       )
    27.     )
    28. )>%outFile%
    29. endlocal
    30. pause
    31. exit /b
    复制代码
    设备未就绪,可能是有移动USB硬盘把
    1

    评分人数

    联系请 mailto:[email protected]

    TOP

    回复 11# flashercs
    已经非常完美了!很高兴!
    其实,令我更高兴的是在茫茫网海中能有您这么一位古道热肠的能人义士,实在是我辈小白之幸事??!
    非常感谢您了!


    ——至于在黑窗口中最后还是要显示“设备未就绪”已无伤大雅的了。并无移动USB硬盘,或许是笔记本电脑吧,抽时间在台式电脑上一试。

    TOP

    返回列表
  • 广州市第十五届人大常委会会议网络直播 2019-04-20
  • “西瓜足迹”瞎掰与“晒的虚荣” 2019-04-20
  • 习近平两会“典”亮新时代 2019-04-07
  • 中国足球,就是笑博士的“责权利平滑对接”改革的必然结果! 2019-04-03
  • 重庆高校陆续公布招生计划、专业设置情况和新政策 2019-04-03
  • 新时代 新气象 新作为 2019-03-30
  • 《中国地方志佛道教文献汇纂》——开辟佛道教研究新领域 2019-03-29
  • 拉萨市墨竹工卡县全力打造“绿色矿山” 2019-03-29
  • 习近平要求把这项工作作为重大政治任务 2019-03-24
  • 充分发挥重要平台和有效载体作用 以特色小镇建设促进乡村振兴 2019-03-18
  • 脸每天都洗,但你真的洗对了吗? 2019-03-18
  • 港珠澳大桥珠海口岸停车场智慧停车系统启用在即 2019-03-14
  • 以实际行动诠释忠诚 以实干实政维护核心 2019-03-14
  • 天津市津南区严打校园周边“五毛食品” 2019-03-11
  • 设计众议院:新时代消费观念造就的全新第八代凯美瑞 2019-03-11