2017-08-30 21 views
1

一連のアプリケーションディレクトリに移動し、それらの中にすべてのdllファイルとocxファイルを登録するバッチファイルを作成しました。昇格したコマンドプロンプトを開いて特定のディレクトリに移動し、手動でregsvrコマンドを入力すると正常に動作します。バッチファイルは、各ファイルを登録しようとしているように見えますが、登録されません。私はそれを右クリックし、管理者として実行するように指示しました(コマンドウィンドウにはタイトルバーに "Administrator"が表示されません)。しかし、登録しません。昇格されたコマンドウィンドウを開いてそこからバッチファイルを実行しようとすると、それも機能しません。バッチファイルからregsvr32を実行しても動作しません

また、スクリプトファイルをc:\ Windows \ System32とC:\ Windows \ SysWOW64に入れてみましたが、何も機能していません。

また、ファイルがUnicodeではなくANSIである必要があることも読んでいますが、それでもどちらも役に立ちませんでした。

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 
+0

引用符を試してください: '/ r %% i for(* .dll)do regsvr32/s "%% i" '。 –

+0

それはトリックだった!それを動作させるために引用符は何をしていますか? – jdixon

+0

二重引用符で囲まれたパスは、スペースが含まれていても単一のパスとして扱われます。 – user2956477

答えて

2

問題は、あなたのパスにスペースです:c:\program files (x86)\pfps

は、ここに私のバッチファイルです。 regsvr32コマンドはスペースで区切り、複数の引数として読み込みます。

は、あなたが持っているスペースが引用符を使用できるようにするには:

for /r %%i in (*.dll) do regsvr32 /s "%%i" 

例えば:ファイルへのパスがregsvr32のために1つの引数として扱われ

regsvr32 "c:\program files (x86)\pfps\blahblah.dll" 

につながります。


なぜ:chdir c:\program files (x86)\pfps仕事をスペースで引用符なし?

here on ss64 about cd/chdirを説明しています:

Command Extensionsが有効になっている場合は、次のように[デフォルト] CDコマンドが拡張されています。

[...]

CDが区切り文字としてスペースを扱いません、名前を引用符で囲まずにスペースを含むサブフォルダ名をCDにすることができます。例えば


CD "\マイフォルダ"

[...]

CHDIRは、CD

の同義語です:マイフォルダ

\
CDと同じです

ただし、パスには必ず引用符を使用することをおすすめします。

+0

それは完璧な意味合いがあります。ありがとうございました! – jdixon

関連する問題