DOSバッチファイルでのfor文とcall文等について

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ DOSバッチファイルでのfor文とcall文等について

複数のファイルをcopyコマンドで一つに連結し、sortコマンドでソートした後、重複行を削除したいと思い、 UNIXでのuniqコマンドに相当するものがWINDOWSでもないかと探してみました。

ちなみに、uniqコマンドとは、重複行を単一行のユニーク(uniq)にするコマンドです。

そこにDOSバッチファイルでのuniqコマンドもどき(uniq.bat)のソースがありました。 しかし、たった14行のソースなのですが全く読めません(わかりません)。 そこで、調べてみました。以下はそのメモです。

uniq.batのソースの引用

  1.    echo off
  2.    set prev=
  3.    if not exist "%1" goto error
  4.    for /f "tokens=* delims=" %%L in ( %1 ) do call :sub %%L
  5.    goto exit
  6.    :sub
  7.    if not "%prev%"=="%*" set prev=%*&&echo %*
  8.    goto :EOF
  9.    :error
  10.    echo.
  11.    echo 表示したいファイル名を指定してください。
  12.    echo [例] uniq.bat file.txt
  13.    echo.
  14.    :exit

ソース説明

uniq.bat使用例

C:\Documents and Settings\xxx>type test.txt
123456789
111111111
111111111
111111111
222222222
C:\Documents and Settings\xxx>uniq test.txt

C:\Documents and Settings\xxx>echo off
123456789
111111111
222222222

uniqコマンドを実行したことにより、111111111の行がユニークになりました。

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。