1. ホーム
  2. スクリプト・コラム
  3. DOS/BAT

ファイル(フォルダ)の存在を検出するWindows用バッチプログラム

2022-02-09 03:32:19

タスクの例

を使用した後 バッチプログラムによるファイルの一括検索とコピー/カット をバッチプログラムで実行しても、元のキーワードと比較して、何ファイル検索されたかを知る必要があることが多いのです。そのためには、キーワードがファイルの束の中に存在するかどうかを一括して検出できるツールが必要です。例えば、以下のようなファイルがあるとします。

AA1

BB2

DD3

BBC1

EE2

アッブ

を含むファイル名から一括検索したい。

AA

BB

CC

のファイルは

希望する結果は AA1, BB2, BBC1, Abb

Excelのvlookupコマンドとほぼ同じですが、バッチプログラムでは、ファイル名のリストをエクスポートする必要がなく、ファイルディレクトリで直接操作できる点が異なります。

インプリメンテーション

と同じです。 一括検索 同様に、このタスクを実装するには、やはり強力なforコマンドが必要で、findコマンドと組み合わせることで、これを実現することができます。また、そのフォルダが存在するかどうかも検出されます。最後に、見つかったキーワードと見つからなかったキーワードが、2つの別々のテキストファイルの下に出力されます。

まず、キーワードを1行ずつ、"list.txt"という名前のテキストファイルに保存します。スペース、空白行、空白戻しはないことに注意してください。たとえば、次のようになります。

#list.txt ファイルの内容

AA

BB

CC

次に、以下のコードをバッチファイルとして拡張子*.batで保存してください。

::Batch search & check
::by lfhacks.com, Apr 1,2009

@echo off
setlocal enabledelayedexpansion
color 1E
echo This program checks if a file (folder) exists in the current directory for the given keyword
echo.
echo by www.lfhacks.com
echo.
echo For example, to check for missing file names
if not exist list.txt (echo.
echo Please save the list of keywords as list.txt first...
pause > NUL
exit
)
echo.
echo Do you want to check files or directories?
echo.
set /p opt=file(f) or directory(d):
if %opt% NEQ f if %opt% NEQ d (
echo Respond to errors.
pause >NUL
exit
)
if %opt%==d (
dir /AD /B * >tempp
)
if %opt%==f (
set /p ext=Specify the file extension (not including ". ", do not specify please enter *):
dir /A-D /B *. !ext! >tempp
)

if exist result.txt del result.txt 
set count=0
for /f "tokens=*" %%i in (list.txt) do (
find "%%i" tempp >NUL
echo check %%i... 
if !errorlevel! EQU 1 (
echo --- Not Found ---
echo %%i >> Not_found.txt
set /a count+=1
) ELSE (
echo %%i >> Found.txt
)
)
del tempp
echo.
if %count% NEQ 0 echo Task complete! A total of %count% keywords do not exist and the results have been saved to Not_found.txt
if %count% EQU 0 echo All the keywords in the list exist
echo The keywords that exist are saved to Found.txt

pause >NUL
exit

Windows効率化バッチ処理の詳細については、以下の関連リンクを参照してください。