バッチファイルとは、
macでいうシェルスクリプトファイルと同じで、
コマンドで様々な処理を一括(バッチ)で処理する方法を記載したファイルのことです。
要はコマンドがまとめて記載されたファイルのことです。
ここでは簡単にバッチファイルの作成の仕方をまとめたいと思います。
Windowsのバッチファイルの作成の仕方
Windowsのバッチファイルの作成の仕方
テキストファイルにコードを書いて保存する。そして保存したファイルで、「名前を変更する」で・・.batとして拡張子を.batにして保存することで作成することが可能。
コマンドでいろんなツールを扱いたい、一連の流れを自動化したい、mstscコマンドで別のwindowsサーバにリモートデスクトップ接続したい、色々ローカルPCとつながっていれば、mysqlやbigqueryなどにログインして、 ローカルから操作できるようにしたりとすることができる。
様々なコマンド
基本的には、コマンドプロンプトで使用できるコマンド全て利用可能。
まずデフォルトで使用できるコマンドは以下である。
コマンド | 内容 |
---|---|
cmd /k | このコマンドを実行すると一旦処理を止めてコマンド待ちとなる。 |
%ERRORLEVEL% | 環境変数。この環境変数が書いてある箇所の1つ前で実行されたプログラムやコマンドが正常に処理できたら、0が入る。それ以外でエラーなどが起きて処理できなかった場合は0以外の数値が入る。 |
@ | コマンドの非表示。コンソール上で実行する時コマンド表示されるが、表示したくないコマンドに@を最初につけることで非表示 |
rem | コメント。よく@remで使用される |
pause | 一旦ここで処理が止まる。cmd /kは止まってコマンドを打つことができるが、pauseは打てず何かキーを押すだけでそのあとの処理が動く。ただの確認くらい。 |
echo off | バッチファイルの最初の一文。shellscriptでいう感じのシバン(shebang)かな。これを書くことでコマンドを実行した後の結果を表示しないようになる。@も同じだが、最初にecho off宣言することで全コマンド非表示設定。 |
start | 外部のバッチファイルを読み込む。ただし、実行した後最初に実行したバッチファイルに戻らない。 |
call | 外部のバッチファイルを読み込む。実行した後、最初に実行したバッチファイルに戻って、callした後のコマンドを実行していく。 |
pushd | コマンドプロンプトはcdを使用しても現在いるドライブから別のドライブに移ることができない。そのため、一時的に移動して操作をすることができる。 |
popd | コマンドプロンプトはcdを使用しても現在いるドライブから別のドライブに移ることができない。そのため、一時的に移動して操作をすることができる。 |
:success | :successの箇所のコードを実行する。 |
:fail | :failの箇所のコードを実行する。 |
for %%i in do: | 繰り返し |
if | もし |
mstsc | リモートデスクトップ接続。(基本はwindowsからwindowsに接続する場合) ※ macなどでリモートデスクトップ接続したい場合はVNC接続 |
環境変数などの詳細設定は、init.batというファイルを作って、それをcallして読み込むやり方がよくされる。
ipconfig・・・このPCのネットワーク接続情報を取得する。(macの場合はifconfig)
ipconfig /all・・・ipconfigの情報+細い情報を取得する。(ipアドレスv4、v6やMACアドレスなど)
ping ●●●●・・・このPCからpingで指定したIPアドレスまたはドメインまでの通信状況を確認できる。パケットが今どのくらい送られているのか、通信状況悪いのか確認可。
tracert ●●●●・・・このPCから、指定したIPアドレスまたはドメインまでに通っているルータの一覧を取得する。
robocopy・・・エクスプローラーにあるファイルの全てをバックアップする。
インストールして使えるコマンド
さらに、windowsで使用できるコマンド全て使えるので、今コマンドが使えなくても使える設定をすれば、バッチファイルで使用することも可能。
pythonコマンドを実行することで、pythonプログラムを実行できる。( windowsではpythonやphp、mysqlなどコマンドはsshコマンドで、別サーバにログインし、その中で該当ファイルを取得したり、さらにはファイルを置いたりなどのこともできる。
そして、pythonだったり、FTPサーバにデータをアップするためにSFTPを入れたり、SCPを入れたりした場合、それらをコマンドで実行できるようにしたい場合は、それぞれのダウンロード先のpythonであれば、python.exeファイルなどの実行ファイルへのパス(set PATH = c:/htdocs/python3/python.exe; %PATH%)を通すことでそこにいても、pythonコマンドで実行できるようになる。
python.exeを通せば、pythonコマンドが使えるようになる
scp.exeを通せば、scpコマンドが使えるようになる
sftp.exeを通せば、sftpコマンドが使えるようになる。
基本的にどんなコマンドも/bin、/sbin配下に実行プログラムがある。なので、/etc/bin/catなので、catコマンドは/etc/bin/cat aaa.txtでも実行できる。
catで実行できるのは、この/etc/binに環境変数のPATHがデフォルトで通っているから。
以下は、デフォルトでwindowsに入っていない、よく使うようなコマンド。
基本的には、windowsは必要なものをインストールして、インストールした中にsshを入れたら、ssh.exeファイルが入っているので、そこへのパスを通すことでsshコマンドがコマンドプロンプトで使うことができる。
sshアプリケーションのコンパイルした実行ファイルなので、この中にsshコマンドが入っている。
コマンド | 内容 |
---|---|
ssh | リモート接続が可能。 |
sshpass | 環境変数。この環境変数が書いてある箇所の1つ前で実行されたプログラムやコマンドが正常に処理できたら、0が入る。 それ以外でエラーなどが起きて処理できなかった場合は0以外の数値が入る。 |
scp | サーバにログインして転送する。 |
sftp | コメント。この@を頭につけることで、実行しなくなる。 |
winscp | SFTPをGUIで操作できるアプリケーション。winscpと打つとwinscpを開くことができる。 |
php | phpをインストールして、php.exeにパスを通すと、phpコマンドが打てる。XAMPPで入れてもphp.exeは入っているのでそこにパスを通す。 |
python | pythonをインストールして、インストール先のpython.exeに通すと、pythonコマンドが打てる。 |
windowsでGCPのSDKを使用する
SDK コマンドプロンプトの環境変数にプロジェクトのjsonファイルを指定する。(サービスアカウント)
set GOOGLE_APPLICATION_CREDENTIALS = "....json"
これにより、コマンドプロンプトでgcloudコマンドでいろいろGCPを操作することができる。例えばgcloud bq コマンドでsqlを叩くことも可能だし、gcloudでGCEを構築することも可能。
まずプロジェクトの.jsonファイルを作成する
以下の環境変数GOOGLE_APPLICATION_CREDENTIALSに記載する
@echo off @rem 環境設定ファイルを読み込む call env1.bat @rem 各種コマンドを使用できるようにphp.exeファイルのようなexeファイルのあるディレクトリへのpathを通しておく。 @rem 上から、phpコマンド、pyコマンド、rscriptコマンド、ssh・scp・sftpコマンド、winscpコマンド(ftpコマンドと同様)、bq・gcloudコマンド @set PATH=C:\xampp\php;%PATH% @set PATH=C:\Users\●●\AppData\Local\Programs\Python\Python37;%PATH% @set PATH=C:\Program Files\R\R-3.5.1\bin;%PATH% @set PATH=C:\Users\●●\Desktop\OpenSSH-Win64;%PATH% @set PATH=C:\Program Files (x86)\WinSCP;%PATH% @set GOOGLE_APPLICATION_CREDENTIALS = "プロジェクト名.json" @rem pythonの実行環境へ cd C:\Users\●●\.PyCharmCE2018.2 @rem コマンドプロンプトが閉じられないようにここで止める cmd /k python oriental_land.py @rem エラーレベルで処理の仕方を変える echo %ERRORLEVEL% pause