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

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



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

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

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

还有一个情况就是 假如说存在一个101M的盘,但是那个盘不是F。这种情况下 也不要清理。

本帖最后由 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

虽然也能达到目的,但是总觉得如果有没考虑到的情况下 运行会出错。

TOP

  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
复制代码

TOP

不就是查询F盘的大小么

QQ 20147578

TOP

回复 3# terse


    谢谢 我测试下

TOP

固定找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]

TOP

本帖最后由 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
复制代码

TOP

返回列表