nakamurk’s diary

日々思うことは残していきます。しっかり生きます。

コマンドプロンプトのチョイ技集

コマンドプロンプトはどこのWindows環境でも使えるという安心感ありますよね。まだまだ、使いずらいと感じますし、PowerShellできるならBashを使いたいですけどね。そんな中で、気になった使い方をメモしておきます。

コマンドを入力中に改行する(20230813記載)

一行で書きたいけど、長すぎて読みづらいので複数行で書きたい場合にどうするか。答えは「^」(キャレット、ハット)をつけると改行できます。PowerShellBashだと「`」バッククオートで改行できますよね。

> echo ^
More? hoge
hoge

「>」はプロンプト*1なので入力しないでください。echoコマンドで「hoge」と出力しているだけですね。でも、改行したくなってしまった場合には、「^」を付けます。そしてエンターを打鍵します。

> echo ^

すると「More?」と入力を促されますので、適当に「hoge」と入力してエンターを打鍵しました。

More? hoge

通常の「> echo hoge」と同じように「hoge」と出力されました。

hoge

以上なのですが、何が幸せかということですね。例えば、次のRobocopyコマンド*2の例を使わせてもらいますと。どれが見やすいですか?という話になります。一行で書いても見やすいのならそれでよいですし、オプションごとに改行するのもやりすぎな感はあります。

rem 一行で書く
> robocopy C:\Users\Admin\Records D:\Backup /S /E /COPY:DAT /MT:16 /LOG:C:\Logs\Backup.log

rem 必須項目とオプションを分ける
> robocopy ^
  C:\Users\Admin\Records ^
  D:\Backup ^
  /S /E /COPY:DAT /MT:16 /LOG:C:\Logs\Backup.log

rem オプションもすべて分ける
> robocopy ^
  C:\Users\Admin\Records ^
  D:\Backup ^
  /S ^
  /E ^
  /COPY:DAT ^
  /MT:16 ^
  /LOG:C:\Logs\Backup.log

何でこんなことするのかといえば、人間の読みやすさを考えているということですね。私は比較的長い行は読みづらいと感じてしまいますが、一回だけのコマンドなら長くてもそのまま書いてしまうことも多いですし、様々な場所でコピペして使いたい場合に変数として切り替えたいところで区切るのは正しい気がします(コピペが正しいかは別問題として)。コピペが嫌であれば例えばスクリプトとして作ると思いますが、その場合は、改行ありのほうが読みやすくなっている気がします。しかし、チームや残された人が「^」で開業できることを知らなければ事故の原因になるので、やはりチームで統一したほうが良いですね。