标题: [系统相关] [已解决]批处理列举盘符,如何排除空的或者无法写入的盘符? [打印本页]
作者: ygqiang 时间: 2014-11-27 00:41 标题: [已解决]批处理列举盘符,如何排除空的或者无法写入的盘符?
本帖最后由 ygqiang 于 2014-11-28 20:57 编辑
[已解决]批处理列举盘符,如何排除空的或者无法写入的盘符?
并且要:避免弹出错误/不能写入的窗口提示。
情况1、某些品牌机,自带n合一读卡器,系统一直带n个空的盘符(不能写入)。
情况2、台式机,自带的光驱。也有盘符,但里面没有光盘,也不能写入。
情况3、u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。
如何排除掉这3种情况下的盘符?- @echo off
- 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 (
- if exist %%a:\ echo %%a:\
- )
- pause
复制代码
- 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)
复制代码
作者: CrLf 时间: 2014-11-27 01:10
本帖最后由 CrLf 于 2014-11-28 01:11 编辑
试试这个:- @echo off
- 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 (
- if exist %%a:\nul echo %%a:\
- )
- pause
复制代码
再试试这个:- @echo off
- 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 (
- echo %%a:\ 3>%%a:\nul
- ) 2>nul
- pause
复制代码
作者: ygqiang 时间: 2014-11-27 06:57
试试这个:再试试这个:
CrLf 发表于 2014-11-27 01:10
多谢。
你给的这2个代码。第2个代码,不能显示。
情况1、某些品牌机,自带n合一读卡器,系统一直带n个空的盘符(不能写入)。
情况2、台式机,自带的光驱。也有盘符,但里面没有光盘,也不能写入。
情况3、u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。
第1个代码能否全部排除掉:这3种情况下显示的盘符。并且要:避免弹出错误/不能写入的窗口提示。
下面这个代码。
如果u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。
就会弹出提示窗口。如何避免弹出错误提示的窗口??- @echo off
- 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 (
- if exist %%a:\ (
- 2>nul >%%a:\tttt.tmp cd.
- if exist %%a:\tttt.tmp (
- del %%a:\tttt.tmp
- echo %%a:
- )
- )
-
- )
-
- pause
复制代码
作者: yiwuyun 时间: 2014-11-27 08:48
我在实践中遇到这种情况,查找下一个可用的驱动器盘符,此时如果有光驱,可用的盘符就不好找得,用上面的方法找到的盘符就会出错。如果要排除这个光驱以及和这种光驱类似的形,应该怎么做喃。如果用errorlevle来识别,但是不存在的盘符和光驱好像都返回1.这不好识别,唯一有一种情形是用该命令的出错文字来判别,但我如何能获取到该文字喃。用>好像不能。
作者: ygqiang 时间: 2014-11-27 22:49
顶顶。。。。
作者: ygqiang 时间: 2014-11-28 12:44
??????????????
作者: amwfjhh 时间: 2014-11-28 12:58
本帖最后由 amwfjhh 于 2014-11-28 15:55 编辑
回复 6# ygqiang
试试- 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可读取)
复制代码
作者: ygqiang 时间: 2014-11-28 19:26
本帖最后由 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可读取)
你给出的这个代码,好像哪个地方有问题啊。
作者: ygqiang 时间: 2014-11-28 19:41
回复 ygqiang
试试
amwfjhh 发表于 2014-11-28 12:58
有人说:“这个语句无法判断磁盘是否开启了写保护”
作者: ygqiang 时间: 2014-11-28 20:57
已解决!!- @echo off
- echo 本地磁盘:
- 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 (
- fsutil fsinfo drivetype %%a: | find "固定">nul && (echo %%a) && (del %%a:\Thumbs.db /f/s/q/a)
- )
-
- pause
- pause
- pause
-
-
-
-
- echo 移动磁盘:
- 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 (
- fsutil fsinfo drivetype %%a: | find "移动">nul && (echo %%a)
- )
-
- pause
- pause
- pause
-
-
- exit
复制代码
作者: ygqiang 时间: 2014-11-28 21:00
试试这个:再试试这个:
CrLf 发表于 2014-11-27 01:10
问题解决了。。
情况1、某些品牌机,自带n合一读卡器,系统一直带n个空的盘符(不能写入)。
情况2、台式机,自带的光驱。也有盘符,但里面没有光盘,也不能写入。
情况3、u盘/usb移动硬盘,带硬件写保护开关,并且开启。也不能写入。
情况3,u盘/usb移动硬盘 应该都是“移动”标识吧?
情况1和2,应该都是啥标识呢?- echo 移动磁盘:
- 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 (
- fsutil fsinfo drivetype %%a: | find "移动">nul && (echo %%a)
- )
- pause
复制代码
作者: ygqiang 时间: 2014-11-29 10:33
- echo 本地磁盘:
- 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 (
- fsutil fsinfo drivetype %%a: | find "固定">nul && (echo %%a) && (
- del /f /s /q /a "%%a:\Thumbs.db" >nul 2>nul
- del /f /s /q /a "%%a:\desktop.ini" >nul 2>nul
- del /f /s /q /a "%%a:\RECYCLER\*.*" >nul 2>nul
-
- rd /s /q "%%a:\baidu player" >nul 2>nul
-
- rd /s /q "%%a:\FavoriteVideo" >nul 2>nul
- rd /s /q "%%a:\FunshionMedia" >nul 2>nul
-
- rd /s /q "%%a:\KanKan" >nul 2>nul
-
- rd /s /q "%%a:\PPDownload" >nul 2>nul
- rd /s /q "%%a:\PPS.tv" >nul 2>nul
- rd /s /q "%%a:\PPSDownload" >nul 2>nul
- rd /s /q "%%a:\ppsvodcache" >nul 2>nul
-
- rd /s /q "%%a:\QMDownload" >nul 2>nul
-
- rd /s /q "%%a:\StormMedia" >nul 2>nul
-
- rd /s /q "%%a:\Youku Files" >nul 2>nul)
-
- )
复制代码
作者: amwfjhh 时间: 2014-11-29 17:47
回复 9# ygqiang
是的,无法判断锁定磁盘,可以排除占着分区号,但是不可用的设备,比如未插入光盘的光驱,或者你说的自带的sd读卡器所理盘符等
作者: yu2n 时间: 2014-11-29 18:40
本帖最后由 yu2n 于 2014-12-1 22:57 编辑
获取没有使用的盘符- :: 获取一个没有使用的盘符.bat
- :: 使用fsutil fsinfo drives、wmic logicaldisk需要管理员权限,发个不需要管理员权限的,使用subst命令(排除光盘盘符):
- @echo off
- 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 (
- rem if not defined last_lab (
- subst "%%i:" "%temp%" >nul 2>nul && (
- subst "%%i:" /d >nul 2>nul && set last_lab=%%i:
- echo 盘符 %%i: 未使用
- )
- rem )
- )
- rem echo last_lab=%last_lab%
- pause
- :: 注意:去掉 rem 注释,可得到一个未使用的盘符 %last_lab% 。
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |