The DOS's Batch commands --- Last updates: at 1996.Nov.04


MS-DOS、あるいはPC-DOSが共通で持っているスクリプト機能: バッチ。 機能はとても貧弱で、使い物にならないと思っているあなた!
でも結構、強力なのですよ。たとえWindows95上でもね,,,。

では試しに次の問題をバッチで書いてみませう
#一行に問題を収めるために、かなり無理した設問文なので注意されたし
  1. 日付と時間を表示してコマンドプロンプトに戻る
  2. 外部コマンドを環境変数Pathで指定された順に探す
  3. コマンドオプションで大文字、小文字の区別をしない方法
  4. あるディレクトリをdelするが、'y'の入力は不要
  5. 複数のファイル名を逐次表示し、実行の可否をその場で選択
  6. カレントディレクトリ内のMIDIファイルを順次演奏

見易さのために全角の「 」で字下げしてますので、切り取って実行する際にはご注意を。

Short cuts: [Prev][Up][Next] [Return to Top]

日付と時間を表示するだけのバッチ

@echo off
date|ver
time|ver

ポイントは、verコマンドが単にその出力として最初に改行だけを返すという所。

Return


Pathの使い方

@echo off
Rem Serch commands from PATH environment variable
 if .%1.==.. goto usage
 for %%f in (%path%) do if exist %%f\%1.* echo '%%f\%1' may executable
 goto ende
:usage
 echo %0 {command name}
:ende

注: Windows95では付属のCommand.comでないとまともに動作しない。

Return


コマンドオプション

@echo off
 for %%f in (-m -M) do if .%%f.==.%1. echo OK to '-m' option
 goto ende
:ende

単に大文字と小文字を区別しない、というだけです。はい

Return


コマンドに自動応答

echo y | del c:\temp\*.* > nul:

これを応用すれば、「最近使ったファイル」を起動時に自動クリアできます。
Autoexec.batに下のように入れてあるだけなんですけどね。
For %%f in (C:\Recycled\*.*) Do Del %%f
For %%f in (C:\Win95\Recent\*.*) Do Del %%f

注:Windows95の設定により、ディレクトリ名が違ってきます

Return


サブルーチンを使う

@Echo off
Rem Subroutine call
If .%1.==.$Sub1. Goto %1
If .%2.==.. Goto Usage

For %%f in (%2 %3 %4 %5 %6 %7 %8 %9) Do Call %0 $Sub1 %1 %%f
Goto Ende

:$Sub1
 Choice Execute '%2 %3'
 If errorlevel 2 Goto Ende
 %2 %3
Goto Ende

:Usage
Echo %0 {Command_Name} {Filename(Wild cards)}
Echo: Do specified command with confirmation.

:Ende

Callを使うのがみそです

Return


Windowsコマンドとの連携

@Echo off
Rem If you want to play .WAV, use SNDREC32 insted.
If .%1.==.. %0 %0 *.mid;*.rmi
If .%1.==./?. Goto Usage
If .%1.==.%0. shift
 For %%f in (%1;%2;%3;%4) Do Start/Wait MPlayer /Play /Close %%f
Goto Ende

:Usage
 Echo %0 MIDI file auto player
 Echo: ex. %0 *.mid;*.rmi

:Ende

Startコマンドと%0の使い方がポイント、かな?

Return


#どれもForコマンドの応用やんか!と思ったあなた、正解です(^^;
 でも結構使えるでしょう?


Short cuts: [Prev][Up][Next] [Return to Top]
なお、この文章のURLは http://www.vector.co.jp/authors/VA006065/scripts/batch.htm です。多分(^^;;