供应商ID收集器在Win批中写的字词无法在Vista上正常使用

问题描述

|| 好。我会快速处理无聊的事情...我的专长是电子硬件故障排除,但是我精通Windows和Linux。我已经对编写有用的win批处理文件产生了兴趣。请不要尝试追加销售其他形式的代码(C ++等),因为我无法在批处理,bash和偶然的vb脚本之外编写任何内容。 因此,我开始使用DEVCON提取一批设备实例ID,并将它们交叉引用到本地数据库,以进行未知的设备标识。 发生的结果是\“> \”文本输出混乱了,据我所知,是由于Vista和7中的UAC引起的。当我以管理员身份运行脚本时,它可以工作,但是不会输出到正确的区域(因为它可以在sys32文件夹中工作),而且我无法对USB跳转驱动器号进行硬编码,因为它会因PC的不同而不同。 该脚本位于可移动媒体上,并且应该写出到该脚本所在的跳转驱动器。当它到达\“> \”并且不以admin身份运行时,它将在新的命令窗口中运行它,并且不会输出。如何获得本地化? 这是麻烦的地方: [注意:进行FOR搜索的ini文件是这样的:] [venid.ini] devid = 8086 =英特尔公司 [devid.ini] devid = 4229 = WiFi链接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,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来获取包含批处理文件的目录的绝对路径,然后将您的输出文件位置基于该位置。