我创build了一个batch file,进入一系列应用程序目录,并在其中注册所有的dll和ocx文件。 如果我打开提升的命令提示符,并切换到特定的目录,并手动inputregsvr命令,它工作正常。 该batch file看起来像试图注册每个文件,但他们没有得到注册。 我已经试过右键点击它,并告诉它以pipe理员身份运行(命令窗口不显示标题栏中的“pipe理员”),但它不会注册。 如果我打开一个提升的命令窗口并尝试从那里运行batch file,它也不起作用。
我也尝试把脚本文件放在c:\ Windows \ System32和C:\ Windows \ SysWOW64中,没有任何工作。
我也读了,该文件需要是ANSI而不是Unicode,但这也没有帮助。
有什么命令我可以放在与regsvr,这将迫使每一个被提升? 我不想让用户手动input所有命令。
这是我的batch file:
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)\pfps\blahblah.dll"
其中文件的路径作为regsvr32
单个参数处理。
为什么: chdir c:\program files (x86)\pfps
使用空格而没有引号?
这里解释了关于cd/chdir
ss64 :
如果启用命令扩展 [默认],CD命令增强如下:
[…]
CD不会将空格视为分隔符,因此可以将CD放入包含空格的子文件夹名称中,而不用引号包围名称。
例如:
cd \我的文件夹是相同的:
cd“\我的文件夹”[…]
CHDIR是CD的同义词
但我建议总是使用引号的路径。