Board logo

标题: [系统相关] 请教批处理diskpart判断盘符和大小 [打印本页]

作者: conan2095    时间: 2023-1-30 23:26     标题: 请教批处理diskpart判断盘符和大小



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

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

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

还有一个情况就是 假如说存在一个101M的盘,但是那个盘不是F。这种情况下 也不要清理。
作者: conan2095    时间: 2023-1-31 10:27

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

虽然也能达到目的,但是总觉得如果有没考虑到的情况下 运行会出错。
作者: terse    时间: 2023-1-31 12:51

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

作者: czjt1234    时间: 2023-1-31 13:13

不就是查询F盘的大小么
作者: conan2095    时间: 2023-1-31 16:22

回复 3# terse


    谢谢 我测试下
作者: terse    时间: 2023-1-31 18:31

固定找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]
作者: yakeyun    时间: 2023-2-1 23:36

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





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2