Признание идентификатора поставщика в Win Batch не работает прямо на Vista - PullRequest
0 голосов
/ 28 мая 2011

Хорошо. Я сделаю скучные вещи быстро ... Моя специальность - устранение неполадок электронного оборудования, но я хорошо разбираюсь в Windows и Linux. Я разработал вкус для написания полезных файлов win win. Пожалуйста, не пытайтесь продвигать другие формы кода (C ++ и т. Д.), Так как я не в состоянии писать что-либо вне batch, bash и случайного легкого vb-скрипта.

Итак, я запустил небольшой пакет, который использует DEVCON для получения идентификаторов экземпляров устройства и перекрестной ссылки на них в локальной базе данных для неизвестной идентификации устройства.

Что происходит, так это то, что вывод ">" в тексте портится, и, насколько я могу судить, из-за UAC в Vista и 7. Он работает, когда я запускаю скрипт от имени администратора, но не не выводить в нужные области (поскольку он работает из папки sys32), и я не могу жестко закодировать букву диска USB-перехода, поскольку она будет варьироваться от компьютера к компьютеру.

Сценарий находится на съемном носителе и ПОДДЕРЖИВАЕТСЯ записать на диск, на котором он находится. Когда он попадает в «>» и не запускается от имени администратора, он запускает его в новом командном окне и не выводит. Как я могу получить это локализовано?

Вот проблемная область:

[ПРИМЕЧАНИЕ: INI-файлы, которые ищут FOR, выглядят так:]

[venid.ini] devid = 8086 = Intel Corporation

[devid.ini] devid = 4229 = WiFi Link 4965AG

:idlookup
set dd=Unknown

set /P VENID=Enter Vendor ID: %=%
echo %venid%>> searches.txt
for /f "tokens=1,2,3,4 delims==" %%a in (venid.ini) do (
if %%b==%venID% set VS=%%c
if %%b==%venID% set vd=%%b
)

REM echo  Searching local machine...
REM devcon -m:\\%computername% find *ven_%venid%* > foundids.txt
REM foundids.txt

REM set /P DEVID=Enter Device ID: %=%
REM for /f "tokens=1,2,3,4 delims==" %%a in (devid.ini) do (

REM if %%b==%DEVID% set dd=%%c
REM )

REM echo       VendorID:  %VD%
echo          Vendor: %VS%
REM echo  Device ID:   [%DEVID%]
REM echo  Description: [%DD%]
pause
set VS=Unknown
goto :vidmenu

1 Ответ

0 голосов
/ 28 мая 2011

Вы можете попытаться использовать %~dp0, чтобы получить абсолютный путь к каталогу, содержащему пакетный файл, а затем основать местоположение выходного файла относительно этого.

...