كيف يمكنني اكتشاف حرف محرك أقراص محرك أقراص USB تمهيد من البرنامج النصي؟

StackOverflow https://stackoverflow.com/questions/721755

سؤال

أنا تشغيل WinPE 2 من UFD قابل للتمهيد، وأحتاج إلى اكتشاف حرف محرك الأقراص من أجل معرفة ImageX حيث للعثور على WIM. ومع ذلك، اعتمادا على الجهاز أنا تصوير، هناك محركات أقراص مختلفة مثبتة.

أحتاج إلى طريقة لتركيب UFD باستمرار، P: P: أو شيء ما. هل هناك طريقة للكشف عن خطاب محرك الأقراص الذي تم فيه تمهيد الجهاز منه، أو طريقة أخرى لتمرير موقع ملف WIM الخاص بي إلى متغير يمكن الوصول إليه من StartNet.cmd؟

إليك شخص آخر بنفس المشكلة في Technet.

http://social.technet.microsoft.com/forums/en-us/itprovistadeplient/thread/3e8bb8db-a1c6-40be-b4b0-58093f4833be؟prof=Required#

هل كانت مفيدة؟

المحلول

ستعرض VBScript هذه رسالة لكل محرك أقراص قابل للإزالة (رسالة: الوصف)، يمكن تعديلها بسهولة للبحث عن محرك أقراص معين وإرجاع الحرف.

 
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType = 11")

For Each objDisk in colDisks
    Wscript.Echo objDisk.DeviceID & objDisk.Description
Next

لا أعرف إذا كان ذلك يساعد على الإطلاق.

نصائح أخرى

إنه حل أقل عام من الآخرين المذكورة هنا، ولكن يبدو أن هناك طريقة محددة لتحديد حجم الصوت الأساسي "تم تمهيد Windows PE نظام التشغيل Windows PE OS". من الوثائق على Windows PE في كيت تثبيت ويندوز المتقدمة:

إذا لم تقم بتشغيل خدمات نشر Windows، فستكون أفضل طريقة لتحديد مكان تمهيد Windows PE تمهيده أولا إلى مفتاح التسجيل Debootramdisksourcedrive. إذا لم يكن موجودا، فقم بمسح محركات أقراص Peboottype الصحيحة والبحث عن نوع من ملف العلامات الذي يحدد محرك التمهيد.

(قيمة التسجيل في السؤال SITS تحت HKLM System CurrentControlset Control.)

إليك حلا غير مثالي. في هذه الحالة، يجب أن يكون لدى UFD اسما محددا، يتم تمريره إلى البرنامج النصي الذي يبحث عن كل حرف محرك أقراص ممكن للمطابقة. ربما لا يكون غير عملي الاعتماد على محركات الأقراص فلاش جميع الاسم نفسه.

لا يزال على أمل أن يشغل شخص ما مع إجابة أفضل!

setlocal

:: Initial variables
set TMPFILE=%~dp0getdrive.tmp
set driveletters=abcdefghijklmnopqrstuvwxyz
set MatchLabel_res=

for /L %%g in (2,1,25) do call :MatchLabel %%g %*

if not "%MatchLabel_res%"=="" echo %MatchLabel_res%

goto :END

:: Function to match a label with a drive letter. 
::
:: The first parameter is an integer from 1..26 that needs to be 
:: converted in a letter. It is easier looping on a number
:: than looping on letters.
::
:: The second parameter is the volume name passed-on to the script
:MatchLabel

:: result already found, just do nothing 
:: (necessary because there is no break for for loops)
if not "%MatchLabel_res%"=="" goto :eof

:: get the proper drive letter
call set dl=%%driveletters:~%1,1%%

:: strip-off the " in the volume name to be able to add them again further
set volname=%2
set volname=%volname:"=%

:: get the volume information on that disk
vol %dl%: > "%TMPFILE%" 2>&1

:: Drive/Volume does not exist, just quit
if not "%ERRORLEVEL%"=="0" goto :eof

set found=0
for /F "usebackq tokens=3 delims=:" %%g in (`find /C /I "%volname%" "%TMPFILE%"`) do set found=%%g

:: trick to stip any whitespaces
set /A found=%found% + 0


if not "%found%"=="0" set MatchLabel_res=%dl%:
goto :eof

:END

if exist "%TMPFILE%" del "%TMPFILE%"
endlocal
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top