- ベストアンサー
バッチファイル 値を比較してメッセージを出力したい
forコマンドで取得したレジストリの値と比較して、同じでなければ「違います」のメッセージを出して、処理を中断したい。 ●試したコマンド: for /f "skip=4 tokens=2*" %%A in ('reg query %REGNAME% /v VVV') if not "%%B"=="1.1.1.1" echo "違います" ●求める結果: あるレジストリ値VVV のデータが1.1.1.1 でなかった場合に「違います」のメッセージを出したい 単にforコマンドとif分岐なのかもしれませんが、うまくいきません。 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- バッチファイル reg queryした値をreg add したい
forコマンドで取得したレジストリの値をreg addしたいです。 ●試したコマンド: for /f "skip=4 tokens=2*" %%A in ('reg query %REG1% /v Data') do 'reg add %REG2% /v key /t REG_NOTE /d "%%B"\aaa' ●エラーメッセージ ''reg' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ●求める結果: reg1の値Data から取得した値を、REG2の文字列値key に「取得値\aaa」 として追加したい。 reg add 以降の指定が不正なようですが、クォーテーションの付け方で対応できるでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- コマンドプロンプト 半角スペースを含んだ文字列の抽出
●ほしい文字列: C:\Program Files\aaa bbb ccc\aa bb ●reg quaryの結果: ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\SOFTWARE\aaaRegister Dir REG_SZ C:\Program Files\aaa bbb ccc\aa bb ●試したコマンド: for /f "skip=2 tokens=3*" %A in ('reg query %REGNAME% /v Dir') do echo %A ●結果:C:\Program token=3-6 としても同じ結果です。 どのようなコマンドが適当なのでしょうか?宜しくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- Windows2000 バッチファイルコマンドについて
こんにちは。 バッチファイルコマンド(DOSコマンド?)について質問があります。 まずやりたい事としては、 「前月日付のフォルダを自動作成したい」 です。 当月日付をもってくる為には以下の様なコマンドでできました。 for /f "tokens=1-2" %%l in ('date /t') do set today=%%l for /f "delims=/ tokens=1-2" %%a in ('echo %today%') do set yymm=%%a%%b このコマンドを実行すると、例えば、%yymm%には200507が入っています。 このコマンドを応用して、前月日付(200506)を取得したいのですが、何か言い方法はありませんでしょうか? また、新たなやり方あるのでしたら教えて頂けないでしょうか?
- ベストアンサー
- Windows系OS
- コマンドプロンプト 半角スペースを含んだ文字列の抽出
コマンドプロンプト 半角スペースを含んだ文字列の抽出 したいです。 reg quaryの結果の一部をコマンドプロンプトで抽出したいのですが、半角スペースを含んでいるからか、求めるような結果が得られません。 ●ほしい文字列: C:\Program Files\aaa bbb ccc\aa bb ●reg quaryの結果: ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\SOFTWARE\aaaRegister Dir REG_SZ C:\Program Files\aaa bbb ccc\aa bb ●試したコマンド: for /f "skip=2 tokens=\3,*" %A in ('reg query %REGNAME% /v Dir') do echo %A ●結果:C:\Program どのようなコマンドが適当なのでしょうか?宜しくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- コマンドプロンプト 全角を含んだ文字列の抽出
●ほしい文字列: C:\Program Files\全体\a b ●reg quaryの結果: ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\SOFTWARE\goo Dir REG_SZ C:\Program Files\本体\a b ●試したコマンド: for /f "skip=2 tokens=2*" %A in ('reg query %REGNAME% /v Dir') do echo %B ●結果:C:\Program Files\全体\a 全角を含んでいると以降のスペース以下が取得できないようなのですが 全角の有無にかかわらず取得できる方法はないでしょうか? 宜しくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
- バッチ reg query コマンドの結果
バッチファイルにてレジストリのキーの存在の有無を知るために以下のコマンドラインを書きました。 reg query "HKEY_LOCAL_MACHINE\SOFTWARE\…" >nul if %ErrorLevel%==0 なら*** 0以外 なら*** 最後にnulを記述したのは結果を表示させたくないからです。 ところが、当該キーが存在する場合は良いのですが、キーが無かった場合 「エラー: 指定されたレジストリ キーまたは値が見つかりませんでした」と表示されてしまいます。 このメッセージを表示させない方法はないでしょうか? ネットで同様の問答がないか検索したところ reg query "パス" 1>nul 2>&1 で解決されると あったので真似てみましたが、レジストリキーがあってもなくても ErrorLevel は常に同じ値に なるばかりです。 解決する手段 または 「reg query "パス" 1>nul 2>&1」 の正しい使い方(ErrorLevelの見方?)を教えてください。 宜しくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- PostgreSQL インストール先の取得
Windows7でレジストリよりPostgreSQLのインストール先をバッチで取得しようとしたのですが取得できませんでした。 同じ階層で「文字列値」に空白がない「Version」は取得できるのですが 「Base Directory」になると取得できません。 文字列値に空白がある場合「”~”(ダブルコーテーション)」でくくればいいとあったのですが、駄目でした。 どなたかご存知の方教えてください。 @echo off FOR /F "TOKENS=1,2,*" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.0" /v "Version"') DO IF "%%A"=="Version" SET GET_Version=%%C FOR /F "TOKENS=1,2,*" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-9.0" /v "Base Directory"') DO IF "%%A"=="Base Directory" SET GET_DIR=%%C echo PostgreSQL Version cho %GET_Version% echo PostgreSQL Directory echo %GET_DIR% pause exit
- ベストアンサー
- PostgreSQL
- バッチファイルでレジストリの値を確認したい
バッチファイルを使い指定したレジストリの値を確認するのに必要なコマンドはわかりました。しかし、実際にバッチファイルにして実行するとコマンドが永遠に実行され続ける状態となってしまいました。コマンドプロンプト上では正常に値が返ってきます。 バッチファイル実行時にコマンドは1回のみ実行され値が返ってくるようにするには何を付け足せばいいでしょうか。 実際のコマンド内容はこちらです。 バッチを実行してInitialEraYearの値を確認したい reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese /v InitialEraYear よろしくお願いいたします。
- ベストアンサー
- Windows 10
- バッチでファイルの読み込み
Windowsバッチでファイルの読み込みをしようと思っているのですが、 下記コマンドの実行で「ファイルが見つかりません」となります。 ※パスにスペースを含むのでusebackqを使用しました。 FOR /F "usebackq tokens=1,2 delims= " %%i in ("c:\temp 1\data.txt") DO echo %%i WindowsServer2003でうまくいかなかったのですが、 Xpですれば問題なくファイルを読み込めました。 何か差があるのでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- バッチ・ログファイルへの出力
<子シェル.bat>に以下のように正常/異常のEXITコードを出力させてます。 コマンド if %ERRORLEVEL% EQU 0 exit 0 if %ERRORLEVEL% NEQ 0 exit 100 <<親シェル.bat>>より上記子シェルをCallして正常/異常時にログファイルへメッセージを出力しようと思っています。 下記のように書いても正常/異常終了と関係なくログファイルへの出力はされませんでした。子シェルの実行自体はされてます。。 call 子シェル.bat IF %ERRORLEVEL% EQU 0 echo "OK" >>%logfile% 2>&1 IF %ERRORLEVEL% NEQ 0 echo "NG" >>%logfile% 2>&1 何が原因なのでしょうか・・・
- 締切済み
- Windows系OS
お礼
大変、参考になりました。助かりました。ありがとうございます!!