command-line - 用于运行 DiskPart 的批处理文件

标签 command-line command

在尝试删除所有分区时,我正在尝试开发一个批处理文件来运行和删除 Windows 7 中的隐藏分区。通常我会在命令提示符窗口中逐行执行此操作,但我试图弄清楚如何创建批处理文件来运行并加快此过程。

这是我在命令提示符中键入的行。

disk part
Rescan
List Disk
Select Disk 3
List Partition
Select Partition 3
Delete Partition Override

我创建了一个 BAT 文件,但只能使第一个命令起作用。

最佳答案

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

好的,diskpart 是终端应用程序,这意味着它有自己的 CLI( c ommand l ine i nterface)。这意味着,如果您想将命令写入磁盘部件,则必须将其作为标准输入写入磁盘部件自己的 CLI( st andar d in put)。这就是为什么您不能通过批处理文件写入命令的原因,因为在 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

因此,上面的代码执行以下操作:
  • echo 命令将生成标准输出( st andar d out put)。通常我们的命令行解释器 cmd.exe 只会在屏幕上打印出这个标准输出。 (您可以通过在 cmd.exe 中仅运行带括号 的回显命令 来尝试)
  • 然后,使用管道 |我们将这些 echo 命令的 stdout 重定向到 diskpart 应用程序。因此,来自 echo 的 stdout 现在将充当 diskpart 应用程序的 stdin。

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

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

    关于command-line - 用于运行 DiskPart 的批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16985518/

    相关文章:

    Android FFmpeg 报告 "file protocol not found"

    Bash 脚本,使用 find 运行 echo 命令,设置变量并使用该变量

    database - 如何针对类型化数据集执行自定义命令

    regex - Perl 正则表达式脚本和命令行不同

    shell - 如何在 Google Colab 中运行 shell(终端)?

    json - 使用 jq 从多维 JSON 数组中选择第 n 个元素

    linux - 如何记忆上一个 bash 命令的参数?

    c - ld:未知选项:-Ttext on Mac OS X 特立独行

    没有交互指令的 Linux 期望命令不起作用

    command-line - Sphinx 搜索既不停止也不正确更新