echofile
(2023.10.4)
echofile 230407 DownLoad from [researchmap]
テキストファイルと同じ内容のファイルを生成する(Windows batファイルの)echoコマンドをクリップボードにコピーするWindows batファイル。生成されるファイルの名前は元のファイル名の先頭に@をつけたもの。
例:sample.txt
こんにちは
3^3は9です。
10<100です。
このように,echoではそのまま表示できない文字があります。
をechofile.bat(またはそのショートカット)にドラッグ&ドロップすると,クリップボードに
echo こんにちは > @sample.txt
echo 3^^3は9です。 >> @sample.txt
echo 10^<100です。 >> @sample.txt
echo このように,echoではそのまま表示できない文字があります。 >> @sample.txt
がコピーされる。これをbatファイルに貼り付けて実行すると,sample.txtと同じ内容の@sample.txtが生成される。
(要件)WSLのインストールされたWindows 10以降。
(制限)
1行にダブルコーテーションが奇数個含まれたテキストファイルは対象外。
.plファイルに対しては,空行とコメント行は除かれる。
用途
テキストファイルを参照して動作するbatファイルの場合,このechoコマンドでテキストファイルをbatファイルで都度生成して参照するようにすれば,テキストファイルなしで,batファイルだけで動作するようにできる。
例 perl
perlスクリプトを動かすbatファイルの場合,このechoコマンドでperlスクリプトをbatファイルで都度生成すれば,別ファイルのperlスクリプトなしで,batファイルだけで動作するようにできる。
例えば,perlスクリプトa.plに入力したいファイルをbatファイルの引数で指定する場合は,batファイルで
cd %~dp1
wsl -u root perl @a.pl "%~nx1"
と記述すれば,WSLとWindowsのパスの違いの問題を避けることができる。perlの出力ファイルは,パスを指定しなければ入力ファイルと同じフォルダに出力される。
同じことを標準入出力とリダイレクトを使って行うには:
cd %~dp1
wsl -u root perl @a.pl < "%~nx1" > out.txt
(画面に表示するメッセージはprint STDERRでSTDERRに出力する)。
出力をクリップボードにするには:
cd %~dp1
wsl -u root perl @a.pl < "%~nx1" | clip
(画面に表示するメッセージはprint STDERRでSTDERRに出力する)。
参考
echoコマンドで出力できない文字と出力方法
文字 出力方法
| ^|
< ^<
> ^>
& ^&
^ ^^
% %%