
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で質問しましょう!
似たような質問が見つかりました
- 不動産業・賃貸業 入居者が増員した時の提出書類 3 2022/06/25 05:27
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- サーバー サクラサーバーでSPFレコードに追加ドメインを行いたいのですが・・。 1 2023/06/15 12:08
- 仕事術・業務効率化 使用中のソフトで、インボイス制度に対応する為の作業料が30万以上。普通? 4 2023/06/15 21:26
- AJAX RPA(PowerAutomate)の実装について 1 2023/07/31 13:46
- 会社・職場 労働条件通知書の従事すべき業務の内容に相違があった(追加で賃金の請求をしたい) 1 2022/07/25 19:08
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- OCNモバイルONE J-COMモバイル 1 2023/08/20 16:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FFFTPの設定ができない
-
Adobe Readerデータのメール送信
-
Fedora Core1でdhcppc1のURLが...
-
VLC media playerを常にデフォ...
-
パソコンの「個人設定」で、起...
-
いきなり「言語解析ライブラリ...
-
PAE(物理アドレスの拡張)をデ...
-
Ubuntuの設定を他のPCに移す
-
fedora4でのFTPサーバについて
-
文字コードについて
-
virtusertableで、AnyNameの有...
-
ubuntu12.04でのデフォルト環境...
-
iDiskエラーが起動ごとに警告を...
-
ディスククリーンアップ、最適化
-
このアプリケーションで開けない。
-
一般ユーザでsudoが実行できない
-
プリンターの共有でトラブル
-
Linuxを入れたばかりなのにタイ...
-
texの使用に関してpathを通すと...
-
ward(mac)の<標準>ツールバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
hosts に 記載がなければ追加...
-
~/.bash_profileがログイン時に...
-
VLC media playerを常にデフォ...
-
Linuxを入れたばかりなのにタイ...
-
ラズパイのファイルのパーミッ...
-
ドラック&ドロップ出来ない時...
-
chownでファイル所有者なのに別...
-
なぜ、No such file or directo...
-
Scriptを教えて下さい。(10.4)
-
2台のWindowsでユーザー名を同...
-
batファイルでローカルセキュリ...
-
crontabの設定ができない(編集...
-
音楽のファイルを開く時にデフ...
-
/etc/inet/hostsの編集の反映に...
-
LASTコマンド、wtmpに...
-
LinuxのOS稼動時間(uptime)を...
-
DHCPかどうか
-
BINDで独自ドメインの名前解決...
-
proftpdが起動できません
-
Fatal server error?
おすすめ情報