- - PR -
バッチファイルで関数は使えるのでしょうか?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-23 17:09
自分のPCから動作させるバッチファイルを作成しています。
バッチファイル初心者です。 set A=NAME_1 処理B(変数Aの値を使用する) set A=NAME_ABC 処理B(変数Aの値を使用する) : : 変数Aの設定値には規則性は無い為、LOOP処理は使えないと思っています。 処理Bを関数化したいと考えていますが、どのようなコマンドがあるのでしょうか? ご教授お願い致します。 | ||||
|
投稿日時: 2006-02-23 17:21
バッチって、このバッチで合ってますかね。
http://forum.nifty.com/fpcu/dosvcmd/batch.htm#call _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-23 17:26
規則性がないからといって、Loop が使えないとは早計。 対象の List を Text としてもたしておいて、標準入力から読み込ませ、 Loop してやればできます。 help にももろに例文がのっています。 # とはいえ、複雑なのは、Batch では面倒なので WSH でやってしまうことが # 非常に多いです。 | ||||
|
投稿日時: 2006-02-23 17:32
>変数Aの設定値には規則性は無い為、LOOP処理は使えないと思っています。
http://forum.nifty.com/fpcu/dosvcmd/batch.htm#for の IN (セット) のセットには 「規則性は無い」 並びも 書けます。 ======== MSH(Monad) では function があります。 ======== 書き方で コマンドプロンプトをいじめてはいけません 本気で作ったとは思えないものなのですから (その事情は知らないですが) [ メッセージ編集済み 編集者: MMX 編集日時 2006-02-24 14:35 ] | ||||
|
投稿日時: 2006-02-23 18:38
FOR構文を使用したいのですが、DO以下のコマンドが複数行の為、
改行して書こうとするとうまくいきません。 FOR %%A IN (A B C) DO echo %%A start echo %%A end %%A endは出力されません。 改行などの位置に決まりはあるのでしょうか? | ||||
|
投稿日時: 2006-02-23 22:41
forの中に複数のコマンドを入れる場合は、括弧でくくります
FOR %%A IN (A B C) DO ( echo %%A start echo %%A end ) | ||||
|
投稿日時: 2006-02-23 22:53
こんばんわ。初めまして。
無理に1つのバッチファイルで処理するのでなく。 バッチファイルからバッチファイルを呼び出せば実現できると考えますが。 イメージ >> FOR %%A IN (A B C) DO cmd.exe /p job.bat %%A >> >> job.bat の中身 >> echo %1 start 必要な処理を記述 >> echo %1 end 所詮MS-DOSの時代の人の作業をスクリプト化するのが目的です。元々「複数行を実行する」という概念がない時代の代物です。 C言語が登場した後に生まれたUNIXのシェルのような期待をもっても無理があるかと考えます。 _________________ ではでは。(^^/ 利休タヌキのxvi30ss | ||||
|
投稿日時: 2006-02-24 01:33
複数のコマンドをまとめるときは、丸括弧でくくる必要があります。
if〜elseなら、 if 条件 ( コマンド1 コマンド2 ) else ( コマンド3 コマンド4 ) ただし、else と開き括弧の間にスペースがないとエラーになりますが(笑) DOSのcommand.comと比べると、Windowsのcmd.exeは大幅に拡張されています。 (互換性にこだわったために色々と奇妙な仕様になっていて、不便な点も多いが) あまりバカにしたもんじゃありません。
C言語やUNIXのシェル(Borne shell)は1970年代、MS-DOSは1980年代の誕生です。 DOSの640KB制限は有名ですが、初期のUnixは64KB制限内で動いていました。 DOSのcommand.comがUnixのshより機能的に大きく劣っているのはその通りですが、 それは時代の差に由来するわけではありません。 |