人に聞けない痔の悩み、これでスッキリ >>

batファイルを使って、レジストリキーの有無を確認し、存在する場合とない場合の処理を変えたいです。
for /f ~do if xxx(goto A) else(goto B) では、キーの有無はチェックできないように思うのですが、可能でしょうか?宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

reg query キー名


で、存在しなければエラーになるので、errorlevelで判断できます。
    • good
    • 2
この回答へのお礼

ありがとうございました。
reg query キー名
IF error level 1 goto A
IF error level 0 goto B で求める処理が行えました。

お礼日時:2007/12/05 10:23

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q[バッチファイル]レジストリ値を取得し、それを条件としてif文動作分岐をする

インターネットオプションのプロキシ設定をバッチファイルでトグルさせようと思ったのですが、思うように動かないのでどなたか助けて頂けないでしょうか。
こちらを参考にさせて頂きました。
http://www.tkssoft.com/cmd/cmd013.html

@echo off
cls
set bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

if '%bool%'=='0' goto Set_1
if '%bool%'=='1' goto Set_0

:Set_1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1
goto :eof

:Set_0
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0
goto :eof


明らかにset部分が間違っていると思うのですが、どのように直したらいいのかいろいろ試してみたのですがどうにも解決しませんでした。

インターネットオプションのプロキシ設定をバッチファイルでトグルさせようと思ったのですが、思うように動かないのでどなたか助けて頂けないでしょうか。
こちらを参考にさせて頂きました。
http://www.tkssoft.com/cmd/cmd013.html

@echo off
cls
set bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

if '%bool%'=='0' goto Set_1
if '%bool%'=='1' goto Set_0

:Set_1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windo...続きを読む

Aベストアンサー

『コマンドプロンプト』を起動して、

set bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

と入力後、

set bool    (←または、echo %bool%)

と入力してみてください。単純に、

bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

と表示されるだけだと思いますョ。

"reg"コマンドの実行結果で分岐させるのでしたら、

reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable

を実行すると("Windows XP"の実行結果では)、

! REG.EXE VERSION 3.0

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
ProxyEnable REG_DWORD 0x0

と画面に表示されますから、これをパイプ(半角の"|")を通して"find"コマンドに送り、"0x0"があるかどうかで、"ERRORLEVEL"を判定すると良いと思います。("find"コマンドは、指定した文字列が見つかれば、"ERRORLEVEL"に0を、見つからなければ1を返します。)

具体的には、

@echo off
cls
reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable | find "0x0"

if %ErrorLevel%==1 goto Set_0
if %ErrorLevel%==0 goto Set_1

:Set_1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1
goto :eof

:Set_0
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0
goto :eof

『コマンドプロンプト』を起動して、

set bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

と入力後、

set bool    (←または、echo %bool%)

と入力してみてください。単純に、

bool='reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable'

と表示されるだけだと思いますョ。

"reg"コマンドの実行結果で分岐させるのでしたら、

reg query "HKEY_CURRENT_...続きを読む

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

QDOSコマンドで、標準出力を出力しないようにするには?

Windowsのバッチファイルでコマンドを実行する際、標準出力をディスプレイに表示したくないのですが、どのようにするのが、一般的なのでしょうか?
CDで実行するので、ファイルに出力はしたくありません。
UNIXとかだと、nullにパイプするようなのですが…。

Aベストアンサー

>UNIXとかだと、nullにパイプするようなのですが…。

リダイレクトですね。

同様です。
標準出力だけなら「c:\> command > nul」
エラー出力もなら「c:\> command > nul 2>&1」

Qコマンドプロンプト バッチ|結果を変数に代入する方法

バッチで、外部のEXEを実行した結果を変数に代入する方法を教えてください。

外部のEXEは
hogehoge.exe あいうえお
と実施した場合
おえういあ
という結果を返します。

たとえば…

SET HOGE=hogehoge.exe あいうえお
ECHO %HOGE%

の結果として おえういあ を表示する
という風にしたいです。

Aベストアンサー

Win2000やXPなど NT系のコマンドプロンプトなら
usebackqを使って バッチの変数に代入してやればいいと思いますよ

for /F "usebackq" %%s in (`hogehoge.exe あいうえお`) DO@ SET HOGE=%%s
といった具合で in句の『hogehoge.exe あいうえお』の実行結果が バッチ変数 %%sに代入されます

Qバッチファイルを作成して、アプリケーションをアンインストールしたい。

バッチファイルを作成して、アプリケーションをアンインストールしたい。
同じアプリケーションを複数の方がインストールしていますが、コントロールパネルからの削除は危惧しております。このアプリケーションはアンインストールexeが無いため、バッチファイルを作成して、簡単に削除することはできないてしょうか。
いろいろと調べましたが、なかなか見つからないため、質問しました。
よろしくお願いします。

Aベストアンサー

レジストリエディタで下記を参照
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Uninstallフォルダ以下に各当アプリのフォルダを探して開きます、右側にUninstall Stringとありパスが確認できます。
そのパスを指定すれば追加と削除の「削除」を選んだのと同じになるので、アンインストーラーを起動した感じになります。

例)Firefoxをbatファイルで削除
Uninstall String に N:\Program Files\Mozilla Firefox\uninstall\helper.exe
とあったので

cd "N:\Program Files\Mozilla Firefox\uninstall"
start helper.exe
上記の様にし実行して確認しました。
※batファイルへの書き方が最善であるかどうかは分かりません。

Qショートカットをデスクトップに作るコマンドを教えて下さい

お世話になります。

WindowsXPや2000のパソコンが100台以上あります。
サーバーに置いてあるTESTER.EXEを各パソコンにコピーするバッチを作るまでは完成しました。
次に、このTESTER.EXEのショートカットをデスクトップに作りたいのですが、どういうコマンドになりますか?
ユーザー名はパソコンによってバラバラなので、その辺のコマンドの書き方もどう書いていいのかわかりません。
なんか変数みたいな何かがあったような気がしますが、よく覚えていません。

参考までにTESTERCOPY.BATはこのようになっています。
最後の行にコマンドが入れば完成となります。
------------------------------------------------------------
C:
CD "\Program Files"
MD AAA
XCOPY /S "\\192.168.0.1\AAA\TESTER.EXE" "C:\Program Files\AAA\"
(TESTER.EXEのショートカットをデスクトップに作るコマンド)
------------------------------------------------------------

以上、宜しくお願いします。

お世話になります。

WindowsXPや2000のパソコンが100台以上あります。
サーバーに置いてあるTESTER.EXEを各パソコンにコピーするバッチを作るまでは完成しました。
次に、このTESTER.EXEのショートカットをデスクトップに作りたいのですが、どういうコマンドになりますか?
ユーザー名はパソコンによってバラバラなので、その辺のコマンドの書き方もどう書いていいのかわかりません。
なんか変数みたいな何かがあったような気がしますが、よく覚えていません。

参考までにTESTERCOPY.BATはこのように...続きを読む

Aベストアンサー

過去の質問です。
参考になるよね?
http://oshiete1.goo.ne.jp/qa2930427.html

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

QWSH レジストリのキーが存在するかチェックしたい

WSHを使って、アプリケーションのインストール作業を行っています。

その際、現在インストールされているアプリケーションのバージョンをチェックするのですが、レジストリのキーが存在するかどうかの確認方法が分かりません。

現状は、RegReadにて、キーが存在するかどうかをチェックしようとしているのですが、キーを読み込んだ場合、規定値を読み込むため、規定値が「値の設定なし」になっている場合、エラーになってしまいます。
(キーが存在しない場合とエラーコードが同じのようで、エラーによるチェックも出来ません)
例)WScript.Echo WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\maker\softwere\5.0\")

何か、良い方法はありませんでしょうか?

Aベストアンサー

MSのサイト見ても似たような感じですねぇ(こちらはWMIを使用しているようですが)
参考になりますでしょうか?なれば良いんだけど

Hey, Scripting Guy!-値がレジストリに存在するかどうかを確認することはできますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/oct04/hey1029.mspx

Qbatファイルで結果を表示しない方法

batファイルで以下のようにレジストリキーの有無を確認し処理を分けたのですが、キーがあった場合には指定したキー下が表示され、キーがない場合には「エラー: 指定されたレジストリ キーまたは値が見つかりませんでした」が表示されてしまいます。
reg query キー名
IF error level 1 goto A
IF error level 0 goto B
reg queryの結果を表示しないにはどのようにしたら良いでしょうか?

Aベストアンサー

reg query HKLM 1>nul 2>&1

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング