批处理文件来删除并重新分配驱动器号

批处理文件来删除并重新分配驱动器号

我认为我遇到了一个独特的问题。我很少使用批处理文件,但我认为那是我最好的选择。情况是这样的。我有一款特殊的软件,它可以在我的系统上查找特定的 CD 托盘,然后在软件中分配该字母。我的驱动器无法正常工作,但它确实授权软件将该驱动器分配为 CD 托盘。一旦软件启动并运行,我就可以管理我的驱动器字母,将正常工作的驱动器字母替换为它看到的驱动器字母,然后一切正常。我需要首先确保我的两个驱动器上都有一个设置好的驱动器字母,我可以在启动时使用启动批处理文件来完成此操作:

Drive 1 : Y
Drive 2 : X

然后,在软件启动并加载驱动器的一定时间之后,交换字母。

Drive 1 : X
Drive 2 : Y

为此,我正在研究使用 diskpart 脚本,但似乎无法通过批处理文件使其工作。

volume 0 remove drive letter
volume 1 remove drive letter // this way they are both blank so I don't have conflicting drive letters when I change one without the other
volume 0 set drive letter="Y"
volume 1 set drive letter="X"
wait 5 minutes // software will see volume 1 as X drive
volume 0 remove drive letter
volume 1 remove drive letter
volume 0 set drive letter="X"
volume 1 set drive letter="Y"
// now the software will see X drive as volume 0 making it all work OK.

听起来可能有点奇怪,但当我手动完成所有操作时,它确实有效。我需要为启动机器但不知道如何或没有时间手动设置的人自动化该过程。

谢谢您的帮助。

答案1

您无法使用批处理/cmd 命令编写 diskpart 脚本。或者 PowerShell,就此而言。而且它不会像您调用时预期的那样接受参数diskpart.exe。非常恼人,但是如果您想以编程方式控制 diskpart,则必须使用“diskpart 脚本”,它们基本上只是文本文件中以换行符分隔的 diskpart 命令。

您应该能够使用以下语法从批处理文件中调用 diskpart 脚本:diskpart /s scriptname.txt

答案2

您可以使用 diskpart 编写脚本。例如

select vdisk file="%driveletter%:\my.vhd"
attach vdisk

这必须从 bat 文件扩展名中调用

DiskPart /s c:\windows\temp\diskpartscript.txt

如果你需要在过程中修改 dispartscript.txt,请使用>carat 将响应复制到文本文件,然后从你的 bat 中调用它

相关内容