[前の記事]« [NT4]ファイル中の文字列を置換するバッチ処理
[次の記事][Win2000] ユーザ入力値の取得 »

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

▲カテゴリー「バッチファイルの起動、引数の取得」索引へ

引数の有無の判断方法


414) 引数の有無判断方法 もんちっち 2003/07/14(月) 22:16


バッチの引数がある場合、ない場合という判断を
行ないたいのですが、どのようにしたら可能でしょうか?

また一部のコマンドは(findコマンドなど)、
コマンドプロンプトを立ち上げてすぐ実行するとできるのに、
ディレクトリを変更したりすると実行できないのですが、
どうしたら実行できるでしょうか。

OSはwindows2000です。
初心者的な質問かもしれませんが、
よろしくお願いします。

417) Re:引数の有無判断方法 ふぇむ 2003/07/14(月) 23:58


>バッチの引数がある場合、ない場合という判断を
>行ないたいのですが、どのようにしたら可能でしょうか?

if "%~1" == "" が成立すれば、引数なし、でいいのでは。
if "%*" == "" でもよさそうですね。

ただし、引数の " の数が不整合だとエラーになるようです。


>また一部のコマンドは(findコマンドなど)、
>コマンドプロンプトを立ち上げてすぐ実行するとできるのに、
>ディレクトリを変更したりすると実行できないのですが、
>どうしたら実行できるでしょうか。

それは、コマンド(*.exe とか *.bat とか *.cmd などなど)をサーチするパスのリストである、環境変数 PATH に、そのコマンドの存在するパスが含まれていないからではないのでしょうか。

設定>コントロールパネル>システム>詳細>環境変数

の、システム環境変数の中の PATH に、コマンドのサーチパスを追加した後に起動したDOSコマンドプロンプトから入力すれば、大丈夫だと思います。


418) Re2:引数の有無判断方法 ふぇむ 2003/07/15(火) 00:06


ちょっとだけ修正。

>if "%~1" == "" が成立すれば、引数なし、でいいのでは。

if "x%~1" == "x" みたいに、ダミーの文字も含めるとちょっとだけ安定性が向上する(空白文字を引数に与えても引数なしとは判定しない)ので、ちょっとだけこの形の方がお勧め、かな。



419) Re3:引数の有無判断方法 ふぇむ 2003/07/15(火) 11:34


すみません、先ほどの書き込みはまったく蛇足でした。昨晩はちょっと試して違うと思ったんですが、勘違いだったようで、ほとんど差はないようです(xをつけることで何が違うのか自分でもわからなくなりました)。

420) Re4:引数の有無判断方法 もんちっち 2003/07/15(火) 20:24


ふぇむさん、返答ありがとうございます。
引数の判断できました!
ほんとにありがとうございます。

あと、コマンドのパスについて、
ずうずうしいかもしれませんがさらに質問していいでしょうか?
findコマンドを使いたいのですが、
環境変数のパスに何を追加すればいいんでしょう?
findコマンドを使うための実行ファイルとかがあるんでしょうか?
また、何を見ればわかるかでも結構ですので教えてください。
よろしくお願いします。




421) Re5:引数の有無判断方法 ふぇむ 2003/07/16(水) 10:58


>あと、コマンドのパスについて、
>findコマンドを使いたいのですが、
>環境変数のパスに何を追加すればいいんでしょう?
>findコマンドを使うための実行ファイルとかがあるんでしょうか?

find って DOSコマンドとしての find ですよね?これが使えませんか? 私の Windows2000 professional では、 find コマンドの実体である c:\winnt\system32\find.exe があって、PATH の中にも c:\winnt\system32 も含まれている(通常デフォルトで含まれているはずと思います)ので、どっからでも findコマンドは起動できます。そのようになっていませんか?

DOS の find 以外の find だとすると(例えば UNIX系コマンドの find ~例えば cygwin における find.exe など)、当然そのディレクトリにパスが通ってないといけませんが...


422) Re6:引数の有無判断方法 ふぇむ 2003/07/16(水) 11:06


>find って DOSコマンドとしての find ですよね?これが使えませんか?

PATH の中で、c:\winnt\system32 の書いてある部分より前半のディレクトリリストの下に、別の find.exe とか find.bat や find.cmd とかもかな、があると、そっちが優先的に起動されてしまいます。そういう問題の可能性も?

(先ほど cygwin の find.exe を例に出しましたが、これも同様に、PATH に書いてあっても上記の関係でパス上の中で先に引っかかったものが起動されると思うので、うまく思ったほうが起動しない可能性があります)


446) Re7:引数の有無判断方法 もんちっち 2003/07/17(木) 10:50


ふぇむさん、丁寧な回答ありがとうございます。

すみません、作成したバッチファイルの中で、
PATHという変数を作り、値をセットしていたため、
環境変数が上書きされて、コマンドが見つからなかったようです。
変数名を変えたらうまくいきました。
無知な私のミスのせいで、
本当にご迷惑をおかけして申し訳ありませんでした。
 
 


カテゴリー「バッチファイルの起動、引数の取得」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2003年07月14日 13:49に投稿されたエントリーのページです。

ひとつ前の投稿は「[NT4]ファイル中の文字列を置換するバッチ処理」です。

次の投稿は「[Win2000] ユーザ入力値の取得」です。

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

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