我需要从bat脚本中获取启动分区的DRIVE NAME 。
我用下面的代码获得了启动分区号:
Windows RE location: \?GLOBALROOTdeviceharddisk0partition1RecoveryWindowsRE
但我需要驱动器名称。 这怎么可能从蝙蝠被检索?
在Linux开发机器上分割TB磁盘的最好方法是什么?
C#从Windows写入ext2 linux分区
以编程方式创build可启动的NTFS / FAT分区Windows XP到Windows 7
如何在Windows下打开一个Linux分区的样式/ dev / sdXY?
Linux只读分区的数据更改
如何知道两个分区是否在没有WMI的物理硬盘中?
最小的fat32分区
如何检查磁盘的分区在Linux中的脚本中使用?
这是我的解决方案。
首先使用以下内容创建一个drives.bat (它将列出逻辑驱动器及其磁盘分区):
@if (@X)==(@Y) @end /* JSCRIPT COMMENT ** @echo off cscript //E:JScript //nologo "%~f0" exit /b // Sources of wisdom: //http://social.msdn.microsoft.com/Forums/vstudio/en-US/659030c8-bcf5-4542-bbc6-eaf9679e090a/cannot-create-object-wmi-in-javascript //http://blogs.technet.com/b/heyscriptingguy/archive/2005/05/23/how-can-i-correlate-logical-drives-and-physical-disks.aspx //http://stackoverflow.com/a/1144788/388389 ************** end of JSCRIPT COMMENT **/ String.prototype.replaceAll = function (find,replace) { var str = this; return str.replace(new RegExp(find.replace(/[-/\^$*+?.()|[]{}]/g,'\$&'),'g'),replace); }; var winmgmts= Getobject("winmgmts:\\.\root\cimv2") var drives = winmgmts.ExecQuery( "SELECT * FROM Win32_diskDrive",null,48 ); //WScript.Echo(drives); var drvs = new Enumerator(drives); for (;!drvs.atEnd();drvs.moveNext()) { var drive=drvs.item(); WScript.Echo( "Physical disk: " + drive.Caption + " -- " + drive.deviceid ); var deviceid = drive.deviceid.replaceAll( "\","\\"); var colPartitions = winmgmts.ExecQuery( "ASSOCIATORS OF {Win32_diskDrive.deviceid="" + deviceid + ""} WHERE Assocclass = Win32_diskDrivetodiskPartition",48 ); var colParts = new Enumerator(colPartitions); for (;!colParts.atEnd();colParts.moveNext()) { var partition=colParts.item(); //WScript.Echo( "disk Partition: " + partition.deviceid ); var colLogicaldisks = winmgmts.ExecQuery( "ASSOCIATORS OF {Win32_diskPartition.deviceid="" + partition.deviceid + ""} WHERE Assocclass = Win32_LogicaldiskToPartition",48); var colLD = new Enumerator(colLogicaldisks); if (typeof colLD.item() != "undefined") { for (;!colLD.atEnd();colLD.moveNext()) { var logicaldisk=colLD.item(); WScript.Echo( " Logical disk: " + logicaldisk.deviceid + " disk Partition: harddisk" + partition.deviceid.split("#")[1].split(",")[0] + "\partition" + partition.deviceid.split("#")[2] ); } } else { WScript.Echo( " disk Partition: harddisk" + partition.deviceid.split("#")[1].split(",")[0] + "\partition" + partition.deviceid.split("#")[2] ); } } }
然后在相同的目录中创建一个re_d.bat (你可以任意调用它)在同一个目录下,内容如下:
@echo off for /f "tokens=5,6 delims=" %%a in ('reagentc.exe /info 2^>nul ^|find /i " Windows RE location:"') do ( set "re_loc=%%a%%b" ) for /f "tokens=2 delims=:" %%a in ('drives.bat ^|find /i "%re_loc%"') do ( set "re_dsk=%%a" ) echo RE LOCATION : %re_loc% echo RE LOGICAL disK : %re_dsk%:
而看到第二个.bat的输出,恭喜你。
如果通过驱动器名称来表示卷标,那么您可以使用下面的名称来查找第5个字的名称将是驱动器名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。