本文へ移動
QKQuickKitEN
WindowsLOCALブラウザ内で処理入力に機密情報を含む可能性があります

CMD / PowerShell 行継続変換

CMD と PowerShell の複数行コマンドで使用される行継続文字(^ / バッククォート)を相互変換します。コマンド本体の構文、変数、引用符は変更せず、変換処理では不要な改行変更を行いません。

入力と主要な処理をブラウザ内で行い、その入力内容をQuickKitサーバーへ送信しない設計です。

実運用中の秘密情報を避け、可能ならダミー値やマスク済みデータを使用してください。 データ取扱いの詳細

入力形式(自動判定):—

結果

仕組みと使い方

変換するのは、物理行の最後の文字が単独の ^(CMD)またはバッククォート(PowerShell)で、行継続だと確実に判断できる箇所だけです。行継続文字の後に空白がある場合(about_Parsing: バッククォートの後に余分な空白があると行継続にならない)、エスケープ文字が連続する場合、最終行や次の行が空行の場合、コメント(REM、::、#、<# #>)・引用符付き文字列・here-string の中、PowerShell の stop-parsing トークン --% の後、改行の前後どちらにも空白がない場合は変換しません。PowerShell のバッククォートはエスケープされていない空白またはタブの直後にある必要があり、直前の token に付いたものはその token の一部です。コマンド引数の中の #(KEY=#value、コマンド名の後の 2#x)はリテラル、式の後の #(2# …、$true# …)はコメントの開始です。どちらか判断できない場合は # をコメントとみなしてその行を変換しません。

CMD の ^ による行継続は次の行の先頭文字もエスケープし得るため、CMD では ^ の直前がエスケープされていない空白またはタブで、次の行の先頭が空白・タブ・通常の文字(英数字と - . / \ _ : + # $ * ? @ [ ] { } ~ ')であり、改行がリダイレクトやコマンド区切りの直後、IF / FOR コマンドの中にない場合だけ変換します。

変換後のテキストは変換先のシェルとして読み直し、そこで行継続にならない行は元のまま残します。変換しなかった行は行番号付きで表示します。行の途中にある ^ やバッククォートはエスケープ文字なので一切変更しません。PowerShell の |・演算子・カンマ・開き括弧の後の暗黙的な行継続は変換対象外です。

「1行化」は、対象と判断した行継続文字とその直後の改行だけを削除し、次の行のインデントは保持します。変換処理自体は改行コード(CRLF / LF)を保持しますが、ブラウザーのテキスト入力欄は通常、内容を LF 改行として渡します。