UNIXのシェルスクリプトでは、コマンドに引数を渡すときに
ヒアドキュメントを使って
例えば、
command <<EOF
data



EOF
という風に、commandの次行からEOFという文字が出てくるまでの間の
値を引数として与えられたり出来ますが
DOSのバッチファイルでも同じ様なこと(似たようなこと)は出来るのでしょうか

現在とあるコマンドに対し、データセットを渡す際に
その都度データファイルを作って、リダイレクトで引数を渡す
という方法で、対処しています
これが出来ると、小さなデータセットくらいならファイル作らなくて済むので
(バッチファイル中にデータセット書き込めるので)
ファイル管理とか非常にやりやすくなるんですが・・・

ご存じの方、教えて下さい!!
勿論、代替策でも結構です

このQ&Aに関連する最新のQ&A

A 回答 (1件)

無理です。



スクリプトとは言わず、バッチファイルというあたりで、想像はつくでしょうが。

どうしても、ということであれば Windows で動くシェル bash や tcsh を
導入するということになりますか。

perl でも良いかも。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。でも、やはり無理でしたか・・・

とりあえず、バッチファイル中で
echo データセット1 > file.tmp
echo データセット2 >> file.tmp
  ・
  ・
  ・
として、最後にこのtmpファイルをdelするということしてます
(ディスクアクセスの回数は格段に上がってしまいますが)

しかしながら、Windowsで動くシェルあるのは初めて知りました
回答いただいてから、tcshを見つけましたので、
それをインストールしてみようかと思います

ありがとうございました

お礼日時:2002/01/11 04:54

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q秀丸でバッチファイルのコメントに色をつけるには

秀丸を使っています。

バッチファイルを編集するときに
remのあるところ(コメント)に色を付けるには、どうすればよいのでしょうか。

ちなみに、
//(スラッシュ2つ)や /* */の部分は色が付きますが、
どう設定したのかは覚えていません。

Version 4.07 です。
WindowsはXP

Aベストアンサー

秀丸ホームページの強調表示定義ファイルライブラリに
DOS 用のやつが公開されているので、それを読み込んで使うといいと思う。

参考URL:http://hide.maruo.co.jp/lib/hilight/batch.html

Qコマンドプロンプトでバッチファイルを実行とは

素人ですが、「コマンドプロンプトでバッチファイルを実行」というのはどうやってやるものですか。

#簡単なサンプルを教えていただきたいのですが。

Aベストアンサー

Windows用語のコマンドプロンプトとは
分類上はコマンドラインインターフェイス(CLI)で
他のOSでは、コンソールと呼ばれることが多い。
ターミナルといった呼び方をする場合もある。

総じて、キーボード入力のコマンドと
上へスクロールアウトしていく文字列で全てがまかなわれる。

正確には、コマンドプロンプトというのは
このコマンドラインインターフェイスにおいて
コマンドの入力を促すために表示されている文字列と記号を指します。
ほぼすべてのOSで普遍的にコマンドプロンプトはそれしか意味しません。

が、Windowsでは、用語の混乱がひどいので
MS-DOS互換コンソールのことをコマンドプロンプトと呼びます。
DOS窓とか、「コマンドラインで」とかいった表現も使います。

バッチファイルは、通常MS-DOSやWindowsにおいて
バッチ処理
(複数のコマンドをひとまとめにした処理)
を行うためのファイルで、拡張子はBATになっています。
中身は、単にコマンドが書き並べられています。

バッチファイルのアイコンをクリックしても起動できますが
バッチファイルでは、処理内容としてドライブや
ディレクトリー,ファイル等を明示的に指定することが多く
また、実行開始する場所からの相対指定が多用されます。

バッチファイルは想定されたディレクトリーで実行しなければ
誤動作したり、事故を起こす可能性も高いと思うべきです。
エラー処理に手間をかけるような事例であれば
最初からバッチファイルで用意したりしないでしょう。

絶対指定と相対指定というウェブにもある概念の理解と
カレントディレクトリーにかかわる位置感覚を身に着けることが
コマンドライン操作の鍵と言えます。

Windows用語のコマンドプロンプトとは
分類上はコマンドラインインターフェイス(CLI)で
他のOSでは、コンソールと呼ばれることが多い。
ターミナルといった呼び方をする場合もある。

総じて、キーボード入力のコマンドと
上へスクロールアウトしていく文字列で全てがまかなわれる。

正確には、コマンドプロンプトというのは
このコマンドラインインターフェイスにおいて
コマンドの入力を促すために表示されている文字列と記号を指します。
ほぼすべてのOSで普遍的にコマンドプロンプトはそれしか意...続きを読む

Qバッチファイルについて教えてください。

windows7を使っております。

バッチファイルを作ってスタートアップのフォルダに入れたのですが、パソコンを再起動するとそのバッチファイルがなくなっていました。
(バッチファイル自体ではなく、ショートカットを入れてみても同じ結果でした)

バッチファイルとは、一度使うとファイルとしては消えてしまうものなんですか?
(ファイルがスタートアップにある間はそのとおりに動き、ファイルを削除すればその効果が
なくなるというような使い方ができれば便利なんですが)

Aベストアンサー

>バッチファイルとは、一度使うとファイルとしては消えてしまうものなんですか?
>「Powercfg -Change -monitor-timeout-dc 20」とテキストファイルに記載し、バッチファイルに変更しました。
そのコマンドはDC電源(バッテリー)の時のモニターを操作無し20分で消す設定ですから実行後に削除される要素がありません。
試しに実行されたか否かをチェックして見ると良いでしょう。
実行前に削除されていればセキュリティソフトが誤認して削除した可能性も考えられます。
実行後に削除されたらセキュリティソフトの価値がありませんので別のものに代えた方が賢明です。

QDOSコマンドでテキスト入力(バッチ化)

いつも勉強させて頂いています。

特定のファイルに対して、DOSコマンドで特定のテキストを追加入力する方法を探しています。
具体的には、以下をイメージしています。

SC QUERY "Lotus Domino Server (LotusDominoData)" | FIND "STOPPED"
IF %ERRORLEVEL%==0 確認.txtに「サービスが上がっていません」というテキストを追加入力

なにとぞ、よろしくお願い致します。

Aベストアンサー

コマンドとしては、

IF %ERRORLEVEL%==0 echo サービスが上がっていません >> 確認.txt

で如何でしょう?

「>」で新規作成、
「>>」で追加になります。

QWin7のコマンドプロンプトでバッチファイル自動終了は?

Win7のコマンドプロンプトでバッチファイル自動終了は?

Windows7上でバッチファイルを実行させます。
このとき、バッチファイルの中身は、Skypeの起動です。
Skype起動はするのですが、コマンドプロンプトの画面は開いたままです。
そして、Skypeを終了(システムトレイから完全終了)させると、コマンドプロンプトも閉じます。

Skype起動中にコマンドプロンプトを手動で終了させても大丈夫なのですが、いちいち面倒です。
なにかいい手はありませんか?



ちなみに、なぜ、バッチファイルでSkypeを起動させるかというと、USBメモリーとかでSkypeを持ち運ぶためです。
バッチファイルの中身です。

Skype.exe /datapath:"DataFile" /removable

バッチファイルは「Skype.exe」と同じディレクトリにあります。
ショートカットで作れば問題ないのですが、そうすると、USBのドライブレターが変わった時に対応できなくなるので、相対ディレクトリ指定のできるバッチファイルで起動をさせています。

Aベストアンサー

じゃあ、スカイプの起動をSTARTコマンドでやってください。

START Skype.exe /datapath:"DataFile" /removable

もしかしたら、skype.exeをフルパスで書かないとダメかも知れませんが、これでプロセスの終了を待たずに次へ進むはずです。

QDOS findコマンドのバッチでストールする

DOSコマンドプロンプトで.batファイルを作成。
内容は
find "2007:01" access_log_2007_04_11.txt >log2007041101.csv

このバッチファイルを、検索するaccess_log_2007_04_11.txt と同じフォルダー上において、ダブルクリックで起動すると。
コマンドプロンプトが開くのだが、以前実行した、
find "2007:00" access_log_2007_04_05.txt >log2007040500.csv
が、延々と実行され。
コマンドプロンプトを閉じても
log2007040500.csv を、消しても消しても、作成される。
システムを落とすしかなくなる。のです。
4月の頭では正しく動作していたんですが???

Aベストアンサー

環境変数PATHで示されるディレクトリの中に、
「find.bat」という名前で、
中身が「find "2007:00" access_log_2007_04_05.txt >log2007040500.csv」のファイルがどこかに存在していませんか?

上記のファイルを検索して存在していないか確認してください。

あと、「find」を大文字で記述されていますが、
大文字と小文字の区別は大丈夫ですか?

「find.bat」(大文字)のファイルがありませんか?

QバッチファイルでEXCELを起動し、マクロ処理の完了を検出する方法

バッチファイルでEXCELを起動し、マクロ処理の完了を検出する方法
バッチファイルでEXCELを起動し、マクロ処理(伝票印刷)が完了するのを待ってバッチファイルの次の処理を行ないたいのですが、よい方法があれば教えてください。

少なくとも、マクロ終了直前にテキストファイルに文字を書出し、バッチファイル側でテキストファイルを読み出せば判定できるのではないかと思いますが、もっとすっきりしたやり方はないでしょうか?

できるだけ自動処理したいのでPAUSEで待てばいいというのはなしでお願いします。

Aベストアンサー

バッチファイルで、

start /wait <Excelマクロを呼び出す命令>

とかってマクロを呼び出し、マクロの最後でExcel終了するようにすれば、次の処理まで待つってのは可能では。

start
| 指定されたプログラムまたはコマンドを実行するためにウィンドウを開きます。
| /WAIT アプリケーションを起動し、終了するまで待ちます。


あるいは、マクロ処理(伝票印刷)が完了してから、ExcelのVBA中からShell関数などで別のバッチファイルを呼び出しとか。
マクロはその処理専用のマクロになっちゃいますが。

Qバッチファイルでフォルダを作りたい

”123”というフォルダの中にバッチファイルがあります
このバッチファイルを実行すると、フォルダ名を取得して、”123 あ”というフォルダと
”123 い”というフォルダをフォルダ”123”の中に作りたいのですができるのでしょうか?

そして、このバッチファイルをコピーして、フォルダ”456”の中に貼り付けます。
ここでバッチファイルを実行すると、フォルダ”456”のなかに、”456 あ”と”456 い”というフォルダを
作れるようにしたいのですが。

お分かりの方、よろしくお願いいたします。

Aベストアンサー

No.2です。少し訂正します。(フォルダ名に空白がある場合の対応)
ちなみにこのバッチはフォルダ名の文字数が可変でもOKです。

:-------------------------- mkAI.bat
pushd "%~dp0"
for %%d in ( "%CD%" ) do set dirname=%%~nxd
md "%dirname% あ"
md "%dirname% い"
popd

Qローカルエリア接続の有効無効を切り替えるバッチファイル

ローカルエリア接続の有効、無効をワンクリックで切り替えたいのですが、
ローカルエリア接続を有効にしたり、無効にしたりするバッチファイルは簡単にできますでしょうか?
(有効にするバッチファイルと、無効にするバッチファイルは別でも構いません。)

Aベストアンサー

ネットワーク接続を開いてローカルエリア接続のアイコンを、
右クリックして、ショートカットの作成をして、
ディスクトップにローカルエリア接続を表示したらどうかな。

それと、作ったローカルエリア接続のショートカットのアイコンを
タスクバーのクイック起動の所に、アイコンを表示させて使うのはどうなのかな。

Q一括変換するバッチファイルを作りたい

とある特殊な圧縮形式を解凍するためのフリーソフトがありまして、
それがDOSプロンプト上でしか動かないのですが、

変換ソフト名 解凍したいファイル名 解凍後のファイル名(必須) /オプション

と、一つ一つ打っていくのが面倒なので、フォルダ内の特定の拡張子を一括変換するバッチファイルを作ろうかと思いました。
しかし、もともとのソフトでワイルドカードが使えないため、付け焼刃の自分の知識では上手くできませんでした。

for %%d in (*.圧縮形式の拡張子) do 解凍ソフト.exe *.圧縮ファイル *.解凍後のファイル /オプション %%d
このようにやってみたのですが、「解凍前と解凍後のファイル名をちゃんと指定しろ」的なエラーメッセージがファイルの数だけ繰り返し表示されるのみでした

こんな場合はどうすれば良いのか、どなたか教えてください。
ちなみにプロンプトに関しては超初心者というか、本当に付け焼刃です。

Aベストアンサー

for ループの変数 %d に対して、%~nd がその拡張子を除いたファイル名になるのでどうぞ。

過去にも同じような質問が
http://oshiete1.goo.ne.jp/qa2333009.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング