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

[系统相关] [已解决]批处理列举盘符,如何排除空的或者无法写入的盘符?

本帖最后由 ygqiang 于 2014-11-28 20:57 编辑

[已解决]批处理列举盘符,如何排除空的或者无法写入的盘符?
并且要:避免弹出错误/不能写入的窗口提示。

情况1、某些品牌机,自带n合一读卡器,系统一直带n个空的盘符(不能写入)。
情况2、台式机,自带的光驱。也有盘符,但里面没有光盘,也不能写入。
情况3、u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。



如何排除掉这3种情况下的盘符?
  1. @echo off
  2. for %%a in (C 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.     if exist %%a:\ echo %%a:\
  4. )
  5. pause
复制代码
  1. for %%a in (c d e f g h i j k l m n o p q r s t) do (del %%a:\Thumbs.db /f/s/q/a)
复制代码

本帖最后由 yu2n 于 2014-12-1 22:57 编辑

获取没有使用的盘符
  1. :: 获取一个没有使用的盘符.bat
  2. :: 使用fsutil fsinfo drives、wmic logicaldisk需要管理员权限,发个不需要管理员权限的,使用subst命令(排除光盘盘符):
  3. @echo off
  4. for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  5. rem  if not defined last_lab (
  6.     subst "%%i:" "%temp%" >nul 2>nul && (
  7.       subst "%%i:" /d >nul 2>nul && set last_lab=%%i:
  8.       echo 盘符 %%i: 未使用
  9.     )
  10. rem  )
  11. )
  12. rem echo last_lab=%last_lab%
  13. pause
  14. :: 注意:去掉 rem 注释,可得到一个未使用的盘符 %last_lab% 。
复制代码
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 9# ygqiang


    是的,无法判断锁定磁盘,可以排除占着分区号,但是不可用的设备,比如未插入光盘的光驱,或者你说的自带的sd读卡器所理盘符等

TOP

  1. echo 本地磁盘:
  2. for %%a in (C 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:\Thumbs.db" >nul 2>nul
  5. del /f /s /q /a "%%a:\desktop.ini" >nul 2>nul
  6. del /f /s /q /a "%%a:\RECYCLER\*.*" >nul 2>nul
  7. rd /s /q "%%a:\baidu player" >nul 2>nul
  8. rd /s /q "%%a:\FavoriteVideo" >nul 2>nul
  9. rd /s /q "%%a:\FunshionMedia" >nul 2>nul
  10. rd /s /q "%%a:\KanKan" >nul 2>nul
  11. rd /s /q "%%a:\PPDownload" >nul 2>nul
  12. rd /s /q "%%a:\PPS.tv" >nul 2>nul
  13. rd /s /q "%%a:\PPSDownload" >nul 2>nul
  14. rd /s /q "%%a:\ppsvodcache" >nul 2>nul
  15. rd /s /q "%%a:\QMDownload" >nul 2>nul
  16. rd /s /q "%%a:\StormMedia" >nul 2>nul
  17. rd /s /q "%%a:\Youku Files" >nul 2>nul)
  18. )
复制代码

TOP

试试这个:再试试这个:
CrLf 发表于 2014-11-27 01:10


问题解决了。。


情况1、某些品牌机,自带n合一读卡器,系统一直带n个空的盘符(不能写入)。
情况2、台式机,自带的光驱。也有盘符,但里面没有光盘,也不能写入。
情况3、u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。


情况3,u盘/usb移动硬盘    应该都是“移动”标识吧?
情况1和2,应该都是啥标识呢?
  1. echo 移动磁盘:
  2. for %%a in (C 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. )
  5. pause
复制代码

TOP

已解决!!
  1. @echo off
  2. echo 本地磁盘:
  3. for %%a in (C 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 && (echo %%a) && (del %%a:\Thumbs.db /f/s/q/a)
  5. )
  6. pause
  7. pause
  8. pause
  9. echo 移动磁盘:
  10. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  11. fsutil fsinfo drivetype %%a: | find "移动">nul && (echo %%a)
  12. )
  13. pause
  14. pause
  15. pause
  16. exit
复制代码

TOP

回复  ygqiang

    试试
amwfjhh 发表于 2014-11-28 12:58


有人说:“这个语句无法判断磁盘是否开启了写保护”

TOP

本帖最后由 ygqiang 于 2014-11-28 19:28 编辑
回复  ygqiang

    试试
amwfjhh 发表于 2014-11-28 12:58



   

批处理列举盘符,如何排除空的或者无法写入的盘符?
并且要:避免弹出错误/不能写入的窗口提示。

情况1、某些品牌机,自带n合一读卡器,系统一直带n个空的盘符(不能写入)。
情况2、台式机,自带的光驱。也有盘符,但里面没有光盘,也不能写入。
情况3、u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。


for %i in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do @(fsutil fsinfo volumeinfo %i:\ | findstr "错误" >nul && echo %i不可读取 || echo %i可读取)

你给出的这个代码,好像哪个地方有问题啊。

TOP

本帖最后由 amwfjhh 于 2014-11-28 15:55 编辑

回复 6# ygqiang

    试试
  1. for %i in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do @(fsutil fsinfo volumeinfo %i:\ | findstr "错误" >nul && echo %i不可读取 || echo %i可读取)
复制代码

TOP

??????????????

TOP

顶顶。。。。

TOP

我在实践中遇到这种情况,查找下一个可用的驱动器盘符,此时如果有光驱,可用的盘符就不好找得,用上面的方法找到的盘符就会出错。如果要排除这个光驱以及和这种光驱类似的形,应该怎么做喃。如果用errorlevle来识别,但是不存在的盘符和光驱好像都返回1.这不好识别,唯一有一种情形是用该命令的出错文字来判别,但我如何能获取到该文字喃。用>好像不能。

TOP

试试这个:再试试这个:
CrLf 发表于 2014-11-27 01:10



多谢。

你给的这2个代码。第2个代码,不能显示。


情况1、某些品牌机,自带n合一读卡器,系统一直带n个空的盘符(不能写入)。
情况2、台式机,自带的光驱。也有盘符,但里面没有光盘,也不能写入。
情况3、u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。

第1个代码能否全部排除掉:这3种情况下显示的盘符。并且要:避免弹出错误/不能写入的窗口提示。



下面这个代码。
如果u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。
就会弹出提示窗口。如何避免弹出错误提示的窗口??
  1. @echo off
  2. for %%a in (C 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.     if exist %%a:\ (
  4.     2>nul >%%a:\tttt.tmp cd.
  5.     if exist %%a:\tttt.tmp (
  6.         del %%a:\tttt.tmp
  7.         echo %%a:
  8.      )
  9.   )
  10. )
  11. pause
复制代码

TOP

本帖最后由 CrLf 于 2014-11-28 01:11 编辑

试试这个:
  1. @echo off
  2. for %%a in (C 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.     if exist %%a:\nul echo %%a:\
  4. )
  5. pause
复制代码
再试试这个:
  1. @echo off
  2. for %%a in (C 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.     echo %%a:\ 3>%%a:\nul
  4. ) 2>nul
  5. pause
复制代码

TOP

返回列表