忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/05    04« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »06

引数に与えたものがファイルかディレクトリか判別するバッチスクリプト

こんな感じ。attrib でファイルの属性をとり、findstr で判定。findstr の結果は ERRORLEVEL に格納されているのにそれを結果として利用。

REM isFile.bat
attrib %1 > TMP_ATTRIB
findstr /R "^A.*" TMP_ATTRIB 1>nul
if ERRORLEVEL 1 (
    REM ディレクトリ
    del TMP_ATTRIB
    exit /b 1
) else (
    REM ファイル
    del TMP_ATTRIB
    exit /b 0
)

こんな感じで呼び出す。以下のバッチスクリプトを保存して上述のバッチスクリプトを isFile.bat と命名して同じディレクトリに配置、exec.bat に判定したいファイルをドラッグ・ドロップすることで実行。

ドラッグ・ドロップしたファイル群をループで処理する際は for %%f in (%*) do () を用いる。バッチスクリプト内から別のバッチスクリプトを呼び出す際には call を用いる。

REM exec.bat
chcp 65001
echo off
set execBatDir=%~dp0

for %%f in (%*) do (
    call %execBatDir%\isFile.bat %%f
    if ERRORLEVEL 1 (
        echo %%fはディレクトリ
    ) else (
        echo %%fはファイル
    )
)

pause
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R