便利なバッチファイル集

Home

Page Menu


1. バッチファイルの楽しさ
  
  例1 現在のディレクトリにあるバッチファイルを表示させる。(ファイル名: bat.bat)
  例2 ワイルドカードも使える ファイル検索 (ファイル名: whereis.bat)
  例3 MS-DOS画面にメニューを表示して選択実行させる
  例4 特定のファイルを一気に削除する。
    例5 サブディレクトリを表示する。

2.Choice の代わりに
   
3.仮想ドライブの作り方
























1. バッチファイルの楽しさ

DOS画面への入り方? わからない方は→DOS窓探検へ 行ってらっしゃい。

お帰りなさい。

では いきなりバッチファイルの例からやりましょう。


例1 ファイル名: bat.bat


下の青い部分をコピーしてエディターに貼り付けて名前をつけて保存(bat.bat)してください。
そして、実行は XXXX>bat 拡張しはいりません。

たった2行のコマンドです。 拡張子を .bat とすることで .exe .com などと並んでアプリケーションに仲間入りし、実行されるコマンドに生まれ変わります。
最早(もはや)単なるテキストファイルではありません。

@echo off
dir /b *.bat
結果


こんな画面結果になるかと思います。この例は、DOSコマンド Subst を使って仮想ドライブp:に入れた自作バッチファイル一覧を表示させたところです。

     


例2 ファイルの検索 ファイル名: whereis.bat

 
コード
@echo off
if "%1"=="" goto usage
        dir %1 /s /b
        goto end

:usage
        echo --------------------------------------
        echo p.091
        echo 引数のファイルをフルパスで出力します。
        echo * や ?のワイルドカードも使えます。
        echo dir "引数" /s /b
        echo -------------------------2004.20.11---
:end
説明

Windowsの検索機能は、高級化した分操作が複雑で、時間がかかってちょっと不備な条件設定でヒットしないこともあります。
そこでこのバッチ作ってみることとなったものです。意外に便利でよく使っています。
XXX>Whereis *.bat
このバッチファイル自身を忘れた時は、whereis と引数なしで入力すると、:usage の行へジャンプしてその機能を表示するようにしてあります。
引数がついていれば、if 文 の次の行を実行して終わったら :end へ飛んで終了です。

結果

     


例3 MS-DOS画面にメニューを表示して選択実行させる


例4 特定のファイルを削除する例


履歴を残すためにファイル名の頭に $~ の記号がついたファイルが沢山できて、煩わしくなる時があります。
「これ全部いらないな!」ということで一気に全部削除したいなんて時にコマンドプロンプトで、
    C:\>del $~* /S
と打ち込むと以下のように削除したファイルを表示しながらそのフォルダー内のファイルを削除してくれます。

C:\>del $~* /S
削除したファイル - C:\B\batch140\$~CALLTEST.BAT
削除したファイル - C:\DownLoaded\cliplog\log\$~041214.txt
削除したファイル - C:\MS-DOS\note210v\$~note.cfg
削除したファイル - C:\Perl_CGI_辞典\PerlCGI_ch7_sample\17_calendar\$~cal


バッチファイルの途中で中止するには、^C(Ctrlキーを押しながらC)ですよ。
これが確認できたら、バッチファイル化しておいた方が、後で記憶を辿るより、簡単です。つまり覚えやすいように別のなまえに書き換えておくのと同じことです。

delhist.bat

@echo off
del $~* /S


ただし、これですといきなり削除作業が始まって、不安になります。ですので、単に delhist(またはdelhist /?) と打ち込んだ時はその使い方と機能を表示するようにしておいた方が、親切です。

@echo off
  if "%1"=="" goto Info
  if "%1"=="/?" goto Info

例5. サブディレクトリを表示する

パソコン付属のCD-ROMドライバーの容量は、数十ギガの時代になって、サブディレクトリの数、(いや今ではフォルダと言わないと通じないかもしれませんが。)がとても覚えきれるものではありませんで、
C:\>tree
なんてコマンドプロンプトからやれば、解ることはわかるのですが、ここではもっと簡単にバッチファイルでやれることをご紹介します。

コード
@echo off
:start
if "%1" == "" goto Info
if "%1" == "/?" goto Info
if "%1" == "/s" goto SaveText
if "%1" == "/S" goto SaveText
if "%1" == "/r" goto Screen
if "%1" == "R" goto Screen

:Info
echo ☆☆☆ フォルダ検索(DRO.bat) 2004.11 ☆☆☆
echo 第1引数 /S (or /s) = c:\dro.txt に保存
echo         /R (or /r) = 画面表示
echo         ナシ (or /?) = 使い方表示
echo 第2引数 現在のドライブ名('\'はつけない。)
echo         スペースを含む時は、""で囲む。
echo ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
goto End

:SaveText
dir %2\*.* | find "<" | sort > c:\dro.txt
echo C:の DRO.txt に保存。
goto End

:Screen
dir %2\*.* | find "<" | sort
echo 以上です。
goto End
:End


画面

半角の<をFindさせて更にソートさせます。
結果は、次のようになります。


2.Choice の代わりに

バッチでメニュー画面を作って選択できるようにするためには、どうしてもMD-DOS時代のChoiceコマンドが必要になります。しかしWindows XP では、Choice コマンドが使えなくなくなってしまいました。少なくとも私のXPでは。
代替コマンドとか、何か別の方法があるはずと信じて探し回って、やっと見つかりました。
これは先々必要になるのでここに説明しておきます。

Microsoft社のサイトからです。英文でしたがコマンド関係の専門用語は、私たち日本人にも馴染みが深いのでなんとか解読してみましたのでご紹介します。
でも以前 Windows 95 98 時代の Choice コマンドのように簡便ではありません。以下にその例 menu.bat で紹介します。

直接そのサイトを見たい方は、
http://www.computerhope.com/sethlp.htm

新しいという感じでありながら、簡便ではなくなったという部分、 %path:~10,5% の意味をよく理解してください。
  %PATH:~10,5% は、
  PATH 環境変数を展開し、展開結果の 11 番目 (オフセット 10) の文字から始まる 5 文字だけを使います。
  Choice も同じで、以下の例の中の set choice=%choice:~0,1% の部分がそれで、オフセット しないで 1文字を
   choice に代入しています。

@ECHO off
cls
:start
ECHO.
ECHO 1. Print Hello
ECHO 2. Print Bye
ECHO 3. Print Test
set choice=
set /p choice=Type the number to print text.
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto hello
if '%choice%'=='2' goto bye
if '%choice%'=='3' goto test
ECHO "%choice%" is not valid please try again
ECHO.
goto start
:hello
ECHO HELLO
goto end
:bye
ECHO BYE
goto end
:test
ECHO TEST
goto end
:end
結果

となります。そして入力待ちしてしている状態です。

それにしても Microsoft 社は、なぜ Choice コマンドを XP で使えないようにしてしまったのでしょうか。
私には、今のところ解りません。

3.仮想ドライブの作り方

subst を使います。
  1) わからない時は、subst /? 下の画面が出てきます。
  2) p:ドライブとは実際にはないドライブですが subust p: c:\p とやって仮想ドライブが作れます。
  3) 設定してある仮想ドライブは、 subst だけで引数をつけないと画面の下の2行
これで、XXX>P: とやるとあたかもP:ドライブがあるように機能します。
  4) 廃止する場合は、XXX>subst p: /D


     






























































End of Page.


[PR]無料でデコメ取り放題♪:カワイイ素材いっぱいあるよ