なんだったっけ

物覚えが悪いので、気になったことをメモしようと

バッチファイルでこまった

バッチファイルを作っていてlssコマンドの動きがおかしいことに気がついたのでメモ!

 

下記の指定フォルダ内の*.txtでファイルサイズが最大のものを取得する処理ですが、11行目の「lss」の両辺は「”」で囲まなければ正しく比較されないと記憶していたけど、数値の場合はその限りではないかも、、、

 

  1. @echo off
  2. setlocal
  3. SET tgt_dir="D:\"
  4. SET MAXFILE=""
  5. SET MAXSIZE=0
  6. for %%i in (%tgt_dir%*.txt) do call :HANTEI %%i
  7. goto END
  8. :HANTEI
  9.  if "%MAXSIZE%" lss "%~z1" (
  10.   SET MAXFILE=%~f1
  11.   SET MAXSIZE=%~z1
  12.  )
  13. exit /b
  14. :END
  15. echo %MAXFILE%
  16. echo %MAXSIZE%
  17. endlocal

 

下記のバッチファイルを実行すると「5のほうが大きい」となり、文字列として比較しているのがわかる。

  1. if "10" lss "5" (
  2.     echo 5のほうが大きい
  3. ) else (
  4.     echo 10のほうが大きい
  5. )
  6. pause