変数

変数

遅延変数

配列

文字列処理

抽出

%変数:~開始,文字数%
set var=This is a sample

echo %var:~1,3%
@rem => his

set var=あいうえお
echo %var:~1,2%
@rem => いう

echo %var:~-1%
@rem => お

echo %var:~-2%
@rem => えお

echo %var:~0,-2%
@rem => あいう

置換

%変数:置換対象文字=置換後文字%
set var=あいうえお
echo %var:あ=か%
@rem => かいうえお

echo %var:*お=か%
@rem => か

echo %var:*う=か%
@rem => かえお

リテラル

エスケープ

エラーレベル

@echo off

dir >NUL && echo success
echo ERRORLEVEL: %ERRORLEVEL%

type error.cat >NUL|| echo file not found
echo ERRORLEVEL: %ERRORLEVEL%

制御構造

条件分岐

繰り返し

コマンド呼び出し

CALL

START

プログラム例

batからJScriptを実行

こんな使い方があるのか、知らなかったが便利なので備考録として書く。 JScriptの @if @endで、囲まれたところまでをbatプログラムとして実行するという方法。

@if(0)==(0) Echo Off
@rem 上記はJScriptでfalseのため実行されない

@rem 自分自身をJScriptとして実行、引数は全てそのまま渡す
CScript //NoLogo //E:JScript "%~f0" %*

@rem Begin Windows Batch
@rem ------------------------------


Exit /b

@rem ------------------------------
@rem End Windows Batch at next line @end
@end
/*
メモなど(JScriptコメント)
*/

// JScriptコード

// Do something

参考

( ) の中での ( ) のエスケープしてパイプでつなげる

^キャレットが3つ必要、パイプでcmdに送られるコマンドでエスケープが必要となるためだ。

@echo off

echo create table if not exists foo (id int) | psql -a

@rem Ex1: この方法はOK
echo ^
  insert into foo (id) values (9); ^
  delete from foo; | psql -a

@rem Ex2: )を^^^)でエスケープする必要あり
(
  echo insert into foo ^(id^^^) values ^(9^^^);
)| psql -a

Ex2は可読性が悪い。。複数コマンドをつなげる場合は、Ex1の方法が良いだろう。

参考

コマンドプロンプトキー一覧

よく使うコマンドプロンプトのキー一覧。

キー意味
ESC現在入力のコマンドをクリア
Page upコマンド履歴の先頭を表示(F7で見える最初)
Page downコマンド履歴の最後を表示(F7で見える最後)
Homeカーソルを行頭に移動
Endカーソルを行末に移動
Tab補完
前のコマンド
次のコマンド
Ctrl + Homeカーソル位置から行頭までを削除
Ctrl + Endカーソル位置から行末までを削除
Ctrl + →単語単位で右に移動
Ctrl + ←単語単位で左に移動
F7履歴表示
F9履歴番号を指定してコマンド実行

環境変数

変数内容
aa
aa
aa
aa
aa
aa
aa
aa
aa
aa

スリープ処理

@rem timeoutを使う
timeout /t 10 /nobreak >nul

@rem pingを使う
ping -n 10 localhost >nul

@rem powershellを使う
powershell -Command Start-Sleep -s 10

参考

役立つリンク


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP