用于运行DiskPart的批处理文件

Jac*_*yes 2 command-line command

在尝试删除所有分区时,我正在尝试开发批处理文件以运行并删除Windows 7中的隐藏分区.通常我会在命令提示符窗口中逐行执行此操作,但是试图找出如何创建要运行的批处理文件并加快此过程.

以下是我在命令提示符中键入的行.

disk part
Rescan
List Disk
Select Disk 3
List Partition
Select Partition 3
Delete Partition Override
Run Code Online (Sandbox Code Playgroud)

我创建了一个BAT文件,但只能获得第一个命令.

Msp*_*prg 10

这真的很容易,但是当我看到其他人的答案时,我想“为什么要以简单的方式做,而您却可以以困难的方式做”:D

好,DISKPART是终端应用,这意味着它有它自己的CLI ç ommandINE覆盖整个院落)。这意味着,如果您想向磁盘部件写入命令,则必须将其作为标准输入( st andard in put)写入磁盘部件自己的 CLI 。这就是为什么您不能通过批处理文件写入命令的原因,因为在 diskpart 退出后,您的 diskpart 命令将作为 cmd.exe 的下一个命令运行。

现在我们只需要对diskpart“撒谎”并将stdin模拟到他的CLI。

我们可以这样实现:

(echo Rescan
echo List Disk
echo Select Disk 3
echo List Partition
echo Select Partition 3
echo Delete Partition Override
)  | diskpart
pause
Run Code Online (Sandbox Code Playgroud)

因此,上面的代码执行以下操作:

  1. echo 命令将生成 std​​out ( st andar d 输出)。通常我们的命令行解释器 cmd.exe 只会在屏幕上打印出这个标准输出。(您可以通过在 cmd.exe 中运行带括号的 echo 命令来尝试)

  2. 然后,|我们使用管道将这些 echo 命令的 stdout 重定向到 diskpart 应用程序。因此,来自 echo 的 stdout 现在将充当 diskpart 应用程序的 stdin。

因此,您运行 diskpart,diskpart 从 echo 获取输入,就像从键盘获取输入一样,当然它可以工作!

就是这样,简单易行的解决方案!


fox*_*ive 7

将您的diskpart命令(键入后键入的命令diskpart)放在文本文件中,script.txt并使用以下命令调用diskpart.

@echo off
diskpart /s script.txt
Run Code Online (Sandbox Code Playgroud)

但要非常小心,您的命令是正确的并经过良好测试,并且不要调用批处理文件diskpart.

有关更多信息,请参见此处:http://support.microsoft.com/kb/300415