バッチファイルでscpコマンドを実行すると、それ以降のコマンドは日本語が文字化けして処理されます。
この記事では、scpコマンド実行後に日本語が文字化けする場合の対処法をご紹介します。
結論を言うと、scpコマンド実行後に「chcp 932 > nul」で文字コードを shift-jis に変更すると文字化けしなくなります。
文字化けするバッチファイルの例
文字化けするバッチファイルの例として、以下を作成しました。
scpコマンド実行後、処理完了メッセージを表示します。
@echo off set BACKUP=..backup cd %~dp0 mkdir %BACKUP% scp -i .keyid_rsa -rp user@192.168.10.10:/var/log/app/* %BACKUP% echo バックアップ取得が完了しました。 pause
実行してみると、処理完了メッセージが文字化けして出力されます。
文字化けの対処法
scpコマンド実行後、「chcp 932 > nul」で文字コードを shift-jis に変更します。
@echo off set BACKUP=..backup cd %~dp0 mkdir %BACKUP% scp -i .keyid_rsa -rp user@192.168.10.10:/var/log/app/* %BACKUP% chcp 932 > nul echo バックアップ取得が完了しました。 pause
文字化けすることなく正常に日本語を出力できるようになりました。
補足:chcpコマンドについて解説
ここでは文字コードの変更に使用したchcpコマンドについて解説します。
コマンドの使用方法
chcpコマンドは、文字コードを変更するコマンドです。
書式は以下の通りです。
chcp [コードページ番号]
コードページ番号を省略すると、現在のコードページ番号が表示されます。
よく使うコードページ番号は以下の通りです。
コードページ番号 | 文字コード |
932 | shift-jis |
65001 | UTF-8 |
その他のコードページ番号は、以下の Microsoft のページにて確認できます。
コードページ識別子 – Win32 apps | Microsoft Docs
「現在のコード ページ」の出力を省略する
chcpコマンドを実行すると、以下のように「現在のコード ページ」が表示されます。
chcpコマンドの後ろに「> nul」をつけると、「現在のコード ページ」の出力を省略できます。
chcp 932 > nul
まとめ:文字化けはchcpコマンドで対処しよう
バッチファイルでscpコマンド実行後に、日本語が文字化けする場合の対処法を解説しました。
chcpコマンドで文字コードを明示的に変更することで文字化けに対処できます。
文字化けして困った時、試してみてください。
コメント