Memo/Windows/BatchFile

http://dexlab.net/pukiwiki/index.php?Memo%2FWindows%2FBatchFile
 

バッチファイル


ダブルクオートの除去

  • %~1
  • test.bat
    1. @echo off
    2. echo %1
    3. echo %~1
  • 結果
    1. test.bat "aaa bbb"
    2. "aaa bbb"
    3. aaa bbb

7zを使ったzipの作成

  1. 7zdir.bat
    • 複数ディレクトリから「ディレクトリ名.zip」を作成する
    • cdしているのはTOPディレクトリ名を含まないzipを作りたいため
      1. for /D %%A in (*) do (
      2.   cd "%%A"
      3.  "C:\Program Files\7-Zip\7z.exe" a -tzip -r "..\%%A.zip" "." 2>&1 >> ..\7zdir_result.txt
      4.   cd ..
      5. )
  2. 実行
    1. 7zdir .

日付と時刻の抽出

  • Windows7で確認
    1. echo %date%
    2. 2014/12/01
    3.  
    4. echo %time%
    5. 01:02:03.45
    6.  
    7. echo %date:~-10,4%%date:~-5,2%%date:~-2,2%
    8. 20141201
    9.  
    10. echo %TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
    11. 010203

UAC対応

  • UAC有効時に「管理者として実行」から実行すると、「%windir%\system32」へと強制移動してしまい、動作しない場合がある対策。以下を先頭に追記
    1. CD /D "%~dp0"

バッチファイルで文字列の抽出

  • CSVやTSVといったファイルから、特定の値を抽出したい場合
  • windows7で確認
  • a.csv
    a,100
    b,200
  • a.bat
    1. @echo off
    2. for /f "tokens=1,2 delims=," %%a in (a.csv) do echo %%a ---- %%b
    3. rem 結果:a ---- 100
    4. rem       b ---- 100
    5.  
    6. for /f "tokens=1,2 delims=," %%a in (a.csv) do if "%%a" == "a" echo %%b
    7. rem 結果:100

バッチファイルの実行パス取得

  • %~<オプション><変数名>% で取得する
  • ヘルプで確認(windows 7)
    1. call /?
    2. ...
    3.        %~1         - すべての引用句 (") を削除して、%1 を展開します。
    4.        %~f1        - %1 を完全修飾パス名に展開します。
    5.        %~d1        - %1 をドライブ文字だけに展開します。
    6.        %~p1        - %1 をパスだけに展開します。
    7.        %~n1        - %1 をファイル名だけに展開します。
    8.        %~x1        - %1 をファイル拡張子だけに展開します。
    9.        %~s1        - 展開されたパスは、短い名前だけを含みます。
    10.        %~a1        - %1 をファイル属性に展開します。
    11.        %~t1        - %1 をファイルの日付/時刻に展開します。
    12.        %~z1        - %1 をファイルのサイズに展開します。
    13.        %~$PATH:1   - PATH 環境変数に指定されているディレクトリを検索し、
    14.                       最初に見つかった完全修飾名に %1 を展開します。
    15.                       環境変数名が定義されていない場合、または
    16.                       検索してもファイルが見つからなかった場合は、
    17.                       この修飾子を指定すると空の文字列に展開されます。
  • 例: d:\tmp\sample.bat, windows7で確認
    1. echo %0
    2. sample.bat

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-12-16 (土) 02:44:26 (131d)