![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
hosts に 記載がなければ追加するバッチを作りたいと思います。
以下のように書くとバッチを流すたびに追加されてしまうのですでにあれば書かないようにしたいです。DNSには書けないのでHOSTSで対応したいです。設定時にミスで数度流しても最初以外は視されるようにならないでしょうか?
対象OSは WindowsXP,2000です。
バッチ内容
TYPE HOSTSCOPY.TXT >> %systemroot%\system32\drivers\etc\host
HOSTSCOPY.TXTの内容
ipアドレス host名
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1です。
補足します。
>FINDSTR: 開くことができません とのメッセージで追加されません。
上記ですがFINDSTRの基本構文は
コマンド オプション 引数
(FINDSTR) 検索文字列 (ファイルなど)
です。
ですので「FINDSTR 144.1.70.203 pdms C:\WINNT\system32\drivers\etc\hosts」はオプションが「144.1.70.203」となり、引数に「pdms」がわたってしまったために、「pdms」というファイルがない=開くことができません、と怒られているのだと思います。
その為空白文字を含んでの検索は/C:オプションを使い二十引用符でくくります。
/C:オプションを使わず二重引用符でくくった場合はOR検索になります。
その他、FOR文を使うのでERRORLEVEL取得時に遅延環境変数も視野に入れないといけません。
なんだかんだといっても私の教え方の問題でした^^;
動確が取れたスクリプトを下記に記載しますので参考にしてください。
わからないことがあったらまた補足してください。
***ここから****************************************
@ECHO OFF
setlocal enabledelayedexpansion
REM 変数の設定
SET HOSTS_FILE=%systemroot%\system32\drivers\etc\hosts
SET ADD_HOSTS_FILE=C:\HOSTSCOPY.TXT
REM hostsファイルの初期化
TYPE %HOSTS_FILE%_org > %HOSTS_FILE%
REM hostsに記載がなければHOSTSCOPY.TXTの内容を追加する
FOR /F "delims=," %%i IN (%ADD_HOSTS_FILE%) DO (
FINDSTR /C:"%%i" %HOSTS_FILE% > nul
IF NOT !ERRORLEVEL! == 0 ( ECHO %%i>>%HOSTS_FILE% )
)
ECHO *****************************************************
ECHO hostsファイルは以下のように作成されました
ECHO *****************************************************
ECHO.
TYPE %HOSTS_FILE%
ECHO.
ECHO *****************************************************
PAUSE
endlocal
EXIT/B 0
*******************************************************ここまで***
参考URL
http://www.atmarkit.co.jp/fwin2k/win2ktips/511fi …
http://f32.aaa.livedoor.jp/~kobun/index.php?CMD. …
No.1
- 回答日時:
>設定時にミスで数度流しても最初以外は視されるようにならないでしょうか?
最初にデフォルトのhostsファイルをバックアップしておいてはいかがでしょうか?
COPY %systemroot%\system32\drivers\etc\host %systemroot%\system32\drivers\etc\host_org
(GUIで事前に作業しても変わらない)
これを初期の状態として
TYPE %systemroot%\system32\drivers\etc\hosts_org > %systemroot%\system32\drivers\etc\hosts
このようにバッチを流すたびに初期化します。
hostsファイルが初期化されたところで追加したいHOSTSCOPY.TXTの内容を反映させましょう。
実際のバッチの中身
---------------------------------------------------------------
@ECHO OFF
REM 変数の設定
SET HOSTS_FILE=%systemroot%\system32\drivers\etc\hosts
SET ADD_HOSTS_FILE=HOSTSCOPY.TXT
REM hostsファイルの初期化
TYPE %HOSTS_FILE%_org > %HOSTS_FILE%
REM hostsに記載がなければHOSTSCOPY.TXTの内容を追加する
FOR /F "delims=," %%i IN (%ADD_HOSTS_FILE%) DO (
FINDSTR %%i %HOSTS_FILE%
IF NOT %ERRORLEVEL% == 0 ( ECHO %%i>>%HOSTS_FILE% )
)
---------------------------------------------------------------
delimsを設定するのは追加項目である「ipアドレス host名」を一行として処理させるためです。
質問の意図が違っていたらごめんなさい。
あと実際に試していないので細かいところでシンタックスエラーになるかもしれませんが、これもご容赦ください。
返事が遅くなり申し訳ありません。
FINDSTR: 開くことができません とのメッセージで追加されません。
2000でもXPでも同じです。
何かヒントをお願いします。
FINDSTR 144.1.70.203 pdms C:\WINNT\system32\drivers\etc\hosts
IF NOT 0 == 0 (ECHO ***.***.***.*** pdms 1>>C:\WINNT\system32\drivers\etc\hosts
)
)
FINDSTR: 開くことができません (ホスト名)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BATファイルを起動するとエディ...
-
ドラック&ドロップ出来ない時...
-
ldapのコンフィグファイルslapd...
-
LANG="ja_JP.UTF-8"設定がサー...
-
タイ語が文字化けします。(Mac ...
-
助けてください。
-
Word・Excelが使えなくなって困...
-
~/.bash_profileがログイン時に...
-
ラズパイのファイルのパーミッ...
-
嫌ってるのに真似してきたりマ...
-
Winmerge ファイルの中身は同じ...
-
バッチファイルで変数の中身を...
-
教えてください!困ってます。
-
office365 ファイルを削除したい
-
macのdmgファイル(動画)をMP4...
-
ファイルの先頭行を全て削除したい
-
同期センターのマークが出てま...
-
能ある鷹は爪を隠す
-
ファイルの単位
-
"cp -a"と"cp -r"の違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linuxを入れたばかりなのにタイ...
-
hosts に 記載がなければ追加...
-
VLC media playerを常にデフォ...
-
jpgファイルが開かない
-
Wine 黒い画面
-
ラズパイのファイルのパーミッ...
-
Solaris8のデフォルトルート変...
-
ドラック&ドロップ出来ない時...
-
BINDで独自ドメインの名前解決...
-
LANG="ja_JP.UTF-8"設定がサー...
-
Scriptを教えて下さい。(10.4)
-
Squidの起動エラーについて
-
LinuxのOS稼動時間(uptime)を...
-
【UNIX】/var/adm/wtmpx という...
-
~/.bash_profileがログイン時に...
-
hostsファイルの書き換えが反映...
-
USBメモリからのソフトの自動起動
-
chownでファイル所有者なのに別...
-
ward(mac)の<標準>ツールバー...
-
Fatal server error?
おすすめ情報