[前の記事]« ファイル名を任意の数字から始まる連番に変更したい
[次の記事]特定のアプリの保存先を検索してファイルを削除したい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FOR /F」索引へ
▲カテゴリー「文字列の操作」索引へ

名前に空白を含むサービス名のチェック

1679.
サービス名に空白を含むサービスの起動チェックについて
2007年02月26日(月) 14時24分
ko-1
はじめまして、ko-1といいます。

現在、バッチファイルでサービス名に空白を含むサービスが起動されているかどうかの
チェック処理を行おうと思っています。

サービスが起動されているかどうかのチェックは、
「NET START」コマンドを使って開始中のサービスの一覧をファイルに出力し、
FOR文でファイルをループして一致する名称がヒットしたら、
breakするような処理を行っているのですが、
サービス名に空白が含まれているためか、IF文ではじかれてしまいます。

このような場合、何か良い方法があったら教えてください。
OSはwindows xpで私が試したコードは以下です。
===========================================
REM サービス名
SET SERVICENAME=SERVICE^ NAME

REM サービス一覧を取得
NET START>wk.tmp

REM FOR文でサービスの一覧を回して該当のサービスが開始されているかチェック
REM "SERVICE NAME"という名称のサービスは起動されているが、
REM 以下のコードの「%%A」をECHOで出力すると「SERVICE」までしか表示されず、
REM 半角スペース以降が出力されない
SET HITSERVICE=
FOR /F %%A IN (wk.tmp) DO IF "%SERVICENAME%."=="%%A." SET HITSERVICE=%%A
IF "%HITSERVICE%."=="%SERVICE%." GOTO :START

===========================================
1680.
Re:サービス名に空白を含むサービスの起動チェックについて
2007年02月27日(火) 12時00分
otn
>FOR /F %%A IN (wk.tmp) DO IF "%SERVICENAME%."=="%%A." SET HITSERVICE=%%A

for /f ではデフォルトで空白とタブで行を区切り、その先頭の語だけを変数にセットします。
解決法は二通りあって、

for /f "delims=" %%A ・・・
 区切りを空にする→行全体が変数にセットされる

for /f "tokens=*" %%A ・・・
 空白で区切るがすべての語を語間(行末も)の空白の個数も保存して変数にセットする→先頭の空白を除いた全体が変数にセットされる

今回は後者のほうがよさそうですね。
1681.
Re:サービス名に空白を含むサービスの起動チェックについて
2007年02月27日(火) 15時04分
ko-1
otnさん。こんにちは。

御回答ありがとうございます!

>for /f "tokens=*" %%A ・・・
上記の対応で期待通りの動作ができました。
感謝です。(^^)

 
 
 


カテゴリー「FOR /F」索引へ
カテゴリー「文字列の操作」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2007年02月26日 13:00に投稿されたエントリーのページです。

ひとつ前の投稿は「ファイル名を任意の数字から始まる連番に変更したい」です。

次の投稿は「特定のアプリの保存先を検索してファイルを削除したい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート