dos时代菜鸟 发表于 2021-2-2 21:44:26

关于 diskpart 不使用脚本文件 集中调用一组指令的方法

本帖最后由 dos时代菜鸟 于 2021-2-2 21:57 编辑

1.
diskpart 可以通过管道接收 一条cmd 命令传递过来的 diskpart 指令,但是如果是多条就不怎么奏效
2.
通常 对于一组多条的 diskpart 指令,我们是通过 /s 参数调用脚本或者通过管道方式 如:type 脚本文件|diskpart 来完成

/s 的好处是 有些diskpart 指令 有 noerr 参数,可以无视错误。但缺点是 需要预先生成 脚本文件再调用。

今天尝试用 for 向diskpart 传递一组指令成功。也可以把 for 传递给 diskpart 后把运行的结果再作为信息流 嵌套 for 进行分析处理。但是 要注意 嵌套 for 要有 单引号 和 ^ 对特定字符进行标记。

举一个例子,显摆一下:{:1_186:}
@echo off
setlocal ENABLEDELAYEDEXPANSION
set n=0
for /f "delims=" %%c in ('
      ^(
                for %%r in ^(
                        "list disk"
                        "list vol"
                        "sele disk 0"
                        "list disk"
                        "detail disk"
                ^) do @^(
                        echo %%~r
                ^)
      ^)^|diskpart
') do (
      if "%%c"=="DISKPART> " (
                set /a n+=1
                echo.
                echo.
                echo **** 第 !n! 条 DISKPART 指令 *************************
                echo.
      )else (
         if !n! geq 1    echo %%c
      )
)
set /a n-=1
echo 共运行了 !n! 条指令.
pause

liuzhaoyzz 发表于 2021-2-2 22:18:18

/s参数提前生成脚本,比较傻瓜化吧。
对于diskpart我没什么研究。很好的经验分享!

nttwqz 发表于 2021-2-2 22:32:58

diskpart的主要问题是首次初始化慢,只是对比一下也比DG启动快。

dos时代菜鸟 发表于 2021-2-2 22:45:07

nttwqz 发表于 2021-2-2 22:32
diskpart的主要问题是首次初始化慢,只是对比一下也比DG启动快。

我有一个n年前的ide 转 usb 的 易驱线,接入 usb 以后,运行 diskpart 就能慢到第二天的感觉。也不知道为啥。

nttwqz 发表于 2021-2-2 22:46:21

dos时代菜鸟 发表于 2021-2-2 22:45
我有一个n年前的ide 转 usb 的 易驱线,接入 usb 以后,运行 diskpart 就能慢到第二天的感觉。也不知道 ...

第二天,哈哈哈哈哈哈哈哈。。。

窄口牛 发表于 2021-2-3 06:35:19

像你们这样的,下象围棋应该是高手吧?

dos时代菜鸟 发表于 2021-2-3 08:32:12

窄口牛 发表于 2021-2-3 06:35
像你们这样的,下象围棋应该是高手吧?

围棋 不会,象棋 倒是能玩几下

rui-rui 发表于 2022-3-5 01:38:31

不错,很牛,终于解决了我一个拖了个很久的问题,牛人。

fxl0571 发表于 2023-11-22 10:39:13

学习了,谢谢分享.

pda8888 发表于 2023-11-25 22:05:09

膜拜你,厉害!
页: [1]
查看完整版本: 关于 diskpart 不使用脚本文件 集中调用一组指令的方法