バッチファイルでこまった
バッチファイルを作っていてlssコマンドの動きがおかしいことに気がついたのでメモ!
下記の指定フォルダ内の*.txtでファイルサイズが最大のものを取得する処理ですが、11行目の「lss」の両辺は「”」で囲まなければ正しく比較されないと記憶していたけど、数値の場合はその限りではないかも、、、
- @echo off
- setlocal
- SET tgt_dir="D:\"
- SET MAXFILE=""
- SET MAXSIZE=0
- for %%i in (%tgt_dir%*.txt) do call :HANTEI %%i
- goto END
- :HANTEI
- if "%MAXSIZE%" lss "%~z1" (
- SET MAXFILE=%~f1
- SET MAXSIZE=%~z1
- )
- exit /b
- :END
- echo %MAXFILE%
- echo %MAXSIZE%
- endlocal
下記のバッチファイルを実行すると「5のほうが大きい」となり、文字列として比較しているのがわかる。
- if "10" lss "5" (
- echo 5のほうが大きい
- ) else (
- echo 10のほうが大きい
- )
- pause