【问题标题】:Bat script which creates ISO from a CD/DVD drive从 CD/DVD 驱动器创建 ISO 的 Bat 脚本
【发布时间】:2021-11-19 14:23:28
【问题描述】:

堆栈社区美好的一天!提前感谢您的宝贵时间

我想创建一个 bat 文件以便从 DVD 驱动器自动创建一个 iso 文件。所以逻辑是:

  1. 查找哪个是 CD/DVD 驱动器(从许多驱动器中)

  2. 并将该结果用作变量(驱动器的:例如 F:),该变量将在以下命令中执行:

    cdbxpcmd.exe --burn-data -folder:F:\ -iso:C:\donalds.iso -format:iso

所以在前面的命令中,F:\ 将是变量,比如说 %input%:\,程序 cdbxpcmd 将使用它来从该驱动器创建一个 iso。

我找到了以下找到驱动器号的脚本, 从这里:https://itectec.com/superuser/windows-how-to-detect-dvd-drive-letter-via-batch-file-in-ms-windows-7/

@echo off
setlocal
for /f "skip=1 tokens=1,2" %%i in ('wmic logicaldisk get caption^, drivetype') do (
  if [%%j]==[5] echo %%i
  )
endlocal

你相信我们可以将它们结合起来吗?如何?有什么建议吗?

【问题讨论】:

  • a) 是的。 b) 将echo %%i 替换为set "input=%%i\" 并在endlocal 之前插入cdbxpcmd.exe --burn-data -folder:%input% -iso:C:\donalds.iso -format:iso c) 参见b)
  • 我想我不明白是什么阻止了你至少尝试自己做这件事?可能发生的最坏情况是什么?您可能会遇到错误并从错误中学习。
  • 如果您在命令括号内专门隔离DriveType,即%SystemRoot%\System32\wbem\WMIC.exe LogicalDisk Where "DriveType='5'" Get DeviceID,肯定会更快。
  • @Stephan 非常感谢您的快速回复。通过运行它,我得到了一些错误。我会在再次测试后回来

标签: batch-file iso


【解决方案1】:

您可以使用cdbxpcmd.exe 本身来定位您的驱动器:

两行例子:

@Set "CDBXP=C:\Program Files\CDBurnerXP\cdbxpcmd.exe"
@For /F "Tokens=2 Delims=()" %%G In ('^""%CDBXP%" --list-drives^"') Do @"%CDBXP%" --burn-data -folder:%%G -iso:"C:\donalds.iso" -format:iso

只需在=1 在线关闭" 之间更改您拥有cdbxpcmd.exe 命令行实用程序的位置。


或者,您仍然可以使用 WMI,但就个人而言,我不会使用 Win32_LogicalDisk,而是使用 Win32_CDROMDrive,它可以验证 CDROM 磁盘是否已加载,并且它是否包含可读数据。

单行例子:

@For /F Tokens^=6^ Delims^=^" %%G In ('%SystemRoot%\System32\wbem\WMIC.exe Path Win32_CDROMDrive Where "MediaLoaded='True' And DriveIntegrity='True'" Get Drive /Format:MOF 2^>NUL') Do @"C:\Program Files\CDBurnerXP\cdbxpcmd.exe" --burn-data -folder:%%G\ -iso:"C:\donalds.iso" -format:iso

只需更改您拥有 cdbxpcmd.exe 命令行实用程序的位置,记住将双引号保留在适当的位置以获得最佳实践。

【讨论】:

  • 非常感谢@Compo。马上就成功了!我已经测试了你的第一个例子。顺便说一句,我猜它无法像第二个那样验证磁盘是否包含可读数据(“MediaLoaded='True')。对吧?
  • 在第二个示例中,布尔值DriveIntegrity 属性是读取部分内容并执行此类检查的属性,因此请随意使用不带And DriveIntegrity='True' 的相同代码,但它是不太可能是您的问题。要检查,只需在命令提示符窗口中尝试该命令,然后查看其输出:%SystemRoot%\System32\wbem\WMIC.exe Path Win32_CDROMDrive Get Drive, DriveIntegrity, MediaLoaded /Format:List 在驱动器中没有 CD/DVD-ROM 磁盘、可读 CD/DVD-ROM 磁盘和空白 CD 的情况下尝试/DVD-ROM 磁盘。
  • 再次感谢您的帮助!我会测试一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 2010-12-27
  • 2012-09-07
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
相关资源
最近更新 更多