找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20131|回复: 6

[系统相关] 请教批处理diskpart判断盘符和大小

[复制链接]
发表于 2023-1-30 23:26:47 | 显示全部楼层 |阅读模式


请教 ,比如说那个磁盘1是F盘,大小是固定的101M,请问用什么命令,可以要同时满足盘符是F,和大小是101M的时候,在执行clean 清除这个磁盘的命令。

已知的是,那个101M的盘 就一个分区,盘符也是固定的。

这个磁盘顺序不一定是1 也有可能是2,或者3

还有一个情况就是 假如说存在一个101M的盘,但是那个盘不是F。这种情况下 也不要清理。
 楼主| 发表于 2023-1-31 10:27:10 | 显示全部楼层
本帖最后由 conan2095 于 2023-1-31 10:44 编辑

我根据之前前辈 idwma 教我的方法改了下
  1. @echo off
  2. for /f "tokens=2,4 delims= " %%i in ('"(echo list disk)|diskpart|findstr /i "mb""') do (
  3. if %%j equ 101 (
  4. (echo select volume=f
  5. echo delete volume )>>1.txt
  6. )else (echo exit)>>1.txt
  7. )
  8. diskpart /s 1.txt
复制代码
我的思路是说 假如 电脑里面 有大小为101M的盘,就写入
select volume=f
delete volume
进1.TXT
如果没有 就直接写入exit到TXT ,或者命令直接退出。

但是 测试的结果是,在没有101M大小盘 他会写入
exit
select volume=f
delete volume

在有101M盘的情况下他会写如
select volume=f
delete volume
exit

虽然也能达到目的,但是总觉得如果有没考虑到的情况下 运行会出错。
发表于 2023-1-31 12:51:19 | 显示全部楼层
  1. @echo off
  2. set "f="
  3. for /f "tokens=4,5" %%a in ('echo list disk ^|diskpart ^|findstr /r /c:"磁盘 *[0-9] "') do (
  4.        if /i "%%a%%b" == "101MB" set f=true
  5. )
  6. (if defined f (
  7.          echo select volume=f
  8.          echo delete volume
  9. ) else echo exit)>1.txt
  10. pause
复制代码
发表于 2023-1-31 13:13:14 | 显示全部楼层
不就是查询F盘的大小么
 楼主| 发表于 2023-1-31 16:22:19 | 显示全部楼层
回复 3# terse


    谢谢 我测试下
发表于 2023-1-31 18:31:33 | 显示全部楼层
固定找101M盘的话 这样试试
  1. [code]@echo off
  2. >1.txt echo exit
  3. for /f %%a in ('"echo list disk |diskpart|findstr /Irc:"101 *MB ""') do (
  4.       (echo select volume=f&echo delete volume)>1.txt
  5. )
  6. rem diskpart /s 1.txt
  7. pause
复制代码
[/code]
发表于 2023-2-1 23:36:29 | 显示全部楼层
本帖最后由 yakeyun 于 2023-2-2 08:32 编辑

回复 1# conan2095
  1. @echo off & setlocal enabledelayedexpansion
  2. Title 硬盘操作中,请稍等...
  3. cd /d "%~dp0"

  4. for /f "tokens=2" %%a in ('echo list disk ^| diskpart ^|find/i "101" ^| find /i "MB"') do set px=%%a
  5. for /f "tokens=3" %%a in ('echo list volume ^| diskpart ^|find/i "101" ^| find /i "MB"') do set pf=%%a
  6. if defined px ( if "%pf%"=="F" (
  7. echo list disk >scriptname.txt
  8. echo select disk %px% >>scriptname.txt
  9. echo clean >>scriptname.txt
  10. diskpart /s "scriptname.txt"
  11. ))

  12. if exist scriptname.txt (del scriptname.txt)

  13. exit
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 05:13 , Processed in 0.018812 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表