我创建了一个批处理文件,该文件转到一系列应用程序目录,并在其中注册所有DLL和OCX文件。如果我打开一个高架命令提示符并更改为特定目录并在Regsvr命令中输入,则可以正常工作。批处理文件看起来像是要注册每个文件,但是它们没有注册。我已经尝试右键单击它,并告诉它以管理员的身份运行(命令窗口未在标题栏中显示"管理员"),但没有注册。如果我打开一个高架命令窗口并尝试从那里运行批处理文件,则它也不起作用。
我还尝试将脚本文件放入C: Windows System32和C: Windows Syswow64中,没有任何作用。
我还读到该文件需要是ANSI而不是Unicode,但这也无济于事。
我可以使用regsvr上的某种命令来迫使每个命令升高吗?我不想让用户手动键入所有命令。
这是我的批处理文件:
chdir c:program files (x86)pfps
for /r %%i in (*.dll) do regsvr32 /s %%i
chdir DataManager
for /r %%i in (*.dll) do regsvr32 /s %%i
chdir ..falcon
for /r %%i in (*.dll) do regsvr32 /s %%i
for /r %%i in (*.ocx) do regsvr32 /s %%i
chdir FVOverlays
for /r %%i in (*.dll) do regsvr32 /s %%i
chdir ....FVImageryService
for /r %%i in (*.dll) do regsvr32 /s %%i
chdir ..GarminGPSFeed
for /r %%i in (*.dll) do regsvr32 /s %%i
chdir ..MapDataServer
for /r %%i in (*.dll) do regsvr32 /s %%i
chdir ..SkyViewNG
for /r %%i in (*.dll) do regsvr32 /s %%i
for /r %%i in (*.ocx) do regsvr32 /s %%i
chdir ..System
for /r %%i in (*.dll) do regsvr32 /s %%i
for /r %%i in (*.ocx) do regsvr32 /s %%i
问题是路径中的空间: c:program files (x86)pfps
。regsvr32
命令将在空间上分开,并将其读为多个参数。
要允许您使用引号:
for /r %%i in (*.dll) do regsvr32 /s "%%i"
导致例如:
regsvr32 "c:program files (x86)pfpsblahblah.dll"
将文件路径处理为regsvr32
的单个参数。
为什么:chdir c:program files (x86)pfps
与空格一起工作,没有引号?
在此处在SS64上解释了有关cd/chdir
:
如果启用了命令扩展名[默认] CD命令的增强如下:
[...]
cd不将空间视为定界符,因此可以将CD降为一个子文件夹名称,该名称包含一个空间,而无需引号。
例如:
CD 我的文件夹与:
相同 CD" 我的文件夹"[...]
chdir是CD的同义词
,但我建议始终将引号用于路径。