从批处理文件运行 regsvr32 不起作用



我创建了一个批处理文件,该文件转到一系列应用程序目录,并在其中注册所有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)pfpsregsvr32命令将在空间上分开,并将其读为多个参数。

要允许您使用引号:

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的同义词

,但我建议始终将引号用于路径。

相关内容

  • 没有找到相关文章

最新更新