[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] [已解决]bat如何实现:本地硬盘某个分区下面,删除满足某个特定要求的目录?

本帖最后由 ygqiang 于 2015-3-31 01:25 编辑

[已解决]bat如何实现:本地硬盘某个分区下面,删除满足某个特定要求的目录?
特定目录的路径,不是固定的。
特定目录名字,也不是固定的。目录名字里面含有的关键字是:隐藏-全

下面的bat代码,如何修改才能实现呢?
  1. echo 本地磁盘:
  2. for %%a in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  3. fsutil fsinfo drivetype %%a: | find "固定">nul && (echo %%a) && (
  4. del /f /s /q /a ""%%a:\000\隐藏-全\*.*" >nul 2>nul
  5. rd /s /q  "%%a:\000\隐藏-全" >nul 2>nul
  6. for %%b in ("*隐藏-全*") do (
  7. del /f /s /q /a ""%%a:\%%b\*.*" >nul 2>nul
  8. rd /s /q  "%%a:\%%b" >nul 2>nul
  9. )
  10. )
  11. )
复制代码
1

评分人数

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

本帖最后由 pcl_test 于 2015-3-31 08:22 编辑

回复 1# ygqiang
文件夹相互嵌套构成路径,既然路径不定,文件夹名不定,只知道包含特定关键字,那么只能用遍历所有分区及文件夹来匹配
那么可以dir /ad /s /b 盘符:\*隐藏-全*
1

评分人数

TOP

本帖最后由 ygqiang 于 2015-3-31 01:23 编辑
回复  ygqiang
文件夹相互嵌套构成路径,既然路径不定,文件夹名不定,只知道包含特定关键字,那么只能用 ...
pcl_test 发表于 2015-3-31 00:57



    多谢。。。。帮忙看看这个代码,是否有问题。。。。
  1. echo 本地磁盘:
  2. for %%a in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  3. fsutil fsinfo drivetype %%a: | find "固定">nul && (echo %%a) && (
  4. for /f "delims=" %%b in ('dir /ad /s /b "%%a:/*隐藏-全*"') do (
  5. echo %%b
  6. del /f /s /q /a "%%b\*.*" >nul 2>nul
  7. rd /s /q  "%%b" >nul 2>nul
  8. )
  9. )
  10. )
复制代码

TOP

回复 3# ygqiang


    你亲自测试一下吧,如果发现问题再回来问。

TOP

本帖最后由 ygqiang 于 2015-3-31 13:42 编辑
  1. @echo off
  2. echo 本地磁盘:
  3. for %%a in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  4.   fsutil fsinfo drivetype %%a: | find "固定">nul && (
  5.     for /f "tokens=*" %%i in ('dir /s/b/ad "%%a:\*隐藏-全*"') do (
  6.       rd /s/q "%%~si"
  7.     )
  8.   )
  9. )
复制代码
for /f "tokens=*" %%i in
rd /s/q "%%~si"


for /f "delims=" %%b in
rd /s /q  "%%b"

这2个差别主要是:

上面那句可以把引号去掉。如果有引号,两句都可以,如果没有引号,当路径中有空格时,下面那句就会引发错误。
它表示将路径以短路径的方式显示。这在DOS时代为了快速查找目标,将所有的文件(夹)名固定在8个字符以内,超过8个字符的,会以"前6个字符+~%d"的形式显示。

"%%~si"这句等同于%%~si
但"%%b"不等于%%b

保险起见,最好还是用%%~si。因为系统的差别,%%b所返回的路径字符串中可能包含有"号,如果遇到这种情况,那用"%%b"反而会出错了。
当对for的变量进行扩展的时候%%~i会强制将字符串中的引号脱掉。再配合其它属性引用,就能确保你的路径字符串始终是一个合法值。

TOP

返回列表