
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ランキング
-
hosts に 記載がなければ追加...
-
2台のWindowsでユーザー名を同...
-
Squidの起動エラーについて
-
VLC media playerを常にデフォ...
-
osx automator 定期実行のスク...
-
crontabの設定ができない(編集...
-
ドラック&ドロップ出来ない時...
-
Apache起動時に秘密鍵パスフレ...
-
デスクトップの再構築?
-
Macでphp.iniファイルの記述を...
-
ラズパイのファイルのパーミッ...
-
見下されるとかマウント取るとか
-
Winmerge ファイルの中身は同じ...
-
嫌ってるのに真似してきたりマ...
-
コマンドプロンプトによるフォ...
-
Excelで保存時間とPCの時間があ...
-
FTPでファイルがダウンロードで...
-
ファイル名で / (スラッシュ...
-
拡張子.dどういう意味
-
onedriveの中身を削除したらパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
hosts に 記載がなければ追加...
-
VLC media playerを常にデフォ...
-
~/.bash_profileがログイン時に...
-
ラズパイのファイルのパーミッ...
-
chownでファイル所有者なのに別...
-
Fedora Core1でdhcppc1のURLが...
-
crontab -e で作成したファイル...
-
2台のWindowsでユーザー名を同...
-
Linuxを入れたばかりなのにタイ...
-
X-Window日本語入力ができません。
-
quick time plug-in
-
FedoraCore4 のW...
-
文字コードについて
-
新しく開くポート番号
-
Squidの起動エラーについて
-
FFFTPの設定ができない
-
cannaについて
-
Adobe Readerデータのメール送信
-
バックアップ、リストアについて
-
Automatorの中の「AppleScript...
おすすめ情報