2

私はこのようなバッチ スクリプトを持っています (これはOpen a file in Visual Studio at a specific line numberから派生できました)。D:\Progra としてパスを指定する必要がないように、devenev ie (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\devenv.exe) のレジストリ キーを渡す方法を教えてください。 ..そして、Visual Studio がインストールされている任意の PC で実行できること。前もって感謝します。

@echo off

cd /d D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE

devenv /Command "Edit.Goto 83" "E:\examples\A.cpp"

@echo off

4

3 に答える 3

3
for /f "tokens=3*" %%x in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\devenv.exe"') do set DEVENV="%%x %%y"
%DEVENV% /Command "Edit.Goto 83" "E:\examples.A.cpp"

1 つの注意点 - VS の複数のエディションがインストールされている場合、これにより、最後にインストールされたバージョンが起動されます。

より一般的に:

set REGKEY="HKLM\SOFTWARE\Wow6432Node\BI\Science\AB\exenamehere.exe"
set CPPFILE=C:\SomePathHere\foo.cpp

for /f "tokens=3*" %%x in ('reg query "%REGKEY%"') do set EXE="%%x %%y"
%EXE% /AnyOtherParamsHere "%CPPFILE%"

このようにコマンドライン引数を受け入れることもできます (理想的にはエラー処理もあるでしょう)。%1 は最初の引数で、%2 は 9 までの 2 番目の引数です。9 個を超えるパラメーターを使用することは確かに可能ですが、この質問の範囲を超えています。

set REGKEY="HKLM\SOFTWARE\Wow6432Node\BI\Science\AB\exenamehere.exe"
set FILENAME=%1

for /f "tokens=3*" %%x in ('reg query "%REGKEY%"') do set EXE="%%x %%y"
%EXE% /AnyOtherParamsHere %FILENAME%

ファイルへのパスにスペースが含まれている場合は、このバッチ ファイルを実行するときにスペースを引用する必要があります (例: mybatch.cmd "C:\path with spaces\foo.cpp")。

また、役に立つことがわかった場合は、これを回答としてマークすることを忘れないでください。:-)

于 2013-03-28T19:44:06.000 に答える
0

あなたはこれを試すことができます、それはうまくいくかもしれません:

for /f "tokens=3*" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\devenv.exe"^|find "<NO NAME>"') do set "key=%%j"
echo "%key%"
于 2013-03-28T19:46:19.397 に答える
0
@ECHO OFF
SETLOCAL 
FOR /F "tokens=2*" %%A IN (
   'REG QUERY "HKLM\SSOFTWARE\Microsoft\Windows\CurrentVersion\App Paths" /v devenv.exe'
) DO (set vs9dir=%%B)
ECHO %vs9dir%

理論的には、あなたの値を返す必要があります。私はVSを持っていないので確認できません。

于 2013-03-28T19:39:18.287 に答える