• 慈善基金进社区 点对点帮扶居民 2019-08-30
  • 西藏:雪域高原唱响教育歌 2019-08-24
  • 海淀创业园双创文化:工艺师传播纸制花艺术与花道 2019-08-22
  • 批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
    [批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
    返回列表 发帖

    广东十一选五开奖视频:[文件操作] [已解决]批处理如何全盘搜索批量删除几类文件,但要排除某些目录?

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

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

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

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

    分分11选5平台 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}}"
    复制代码
    测试是否是想要删除的文件,然后再删。
    Email:[email protected]
    QQ:49908356

    TOP

    回复 2# flashercs


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

    TOP

    回复 2# flashercs

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

    TOP

    回复 4# locoman


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

    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
    复制代码
    Email:[email protected]
    QQ:49908356

    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
    复制代码
    Email:[email protected]
    QQ:49908356

    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

    评分人数

    Email:[email protected]
    QQ:49908356

    TOP

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


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

    TOP

    返回列表
  • 慈善基金进社区 点对点帮扶居民 2019-08-30
  • 西藏:雪域高原唱响教育歌 2019-08-24
  • 海淀创业园双创文化:工艺师传播纸制花艺术与花道 2019-08-22
  • 杭州网络赚钱 2006年大乐透走势图 丰禾真钱娱乐hh 广西十一选五前三直选走势图 吉林快三走势图彩经网网 深圳福利彩票走势图 中彩票的概率 山东十一选五走势图表一定牛 3d彩票如何计算方法 青海福彩网3d开奖结果 机斗地主(单机版) 江苏快三走势图表 玩二八杠的赢钱技巧 EV体育外围APP 福利彩26选5好彩3