これまでは何となくで使ってきた Windows だけれども、自分に合う快適な操作環境を意識しながら整えていこう。自分に合った快適を探す経過の記録。
file's timestamp(秒表示)
行数を出力する
0 byte file(空ファイル)
テキストをファイルへと出力する
遅延展開
set
6
7
8
9
setlocal enabledelayedexpansion 遅延展開
Batファイルで遅延展開を有効にするためのもの。One-linerでは enabledelayedexpansion は解釈されることはない。つまり書いても無意味。
遅延展開が必要なら、cmd /v:on で起動し直してから実行する。
以下、遅延展開も含めたOne-liner。私の力作。無駄に無理やり/c を"括らず"、括れば^が少なくなり、もう少し楽に作れます。サンプルはこのBLOG内探せばあります。
cmd /v:on /c for /f "tokens=1,* delims=:" %a in ('for /d %i in ^^(*^^) do @echo 0:%~fi ^^^& dir "%i" /a /s ^^^| findstr /e "バイト" ^^^| sort /r ^^^| findstr /n ".*" ') do @(if %a==0 set p=%b) ^^^& if %a==1 echo %b,!p!call を利用することでもできるとの情報あり。callでできる時とできないときの区別ができていないので保留
prompt
C:\?>set prom PROMPT=$P$G C:\?>prompt $P[$t]$G C:\?[ 1:18:20.12]>
>nul
pause >nulIf - DOS コマンド一覧 - Programming Field
のsampleにある。pauseにより出力されるmessageを表示しないためのものと思われる。
^
C:\>echo a ^ More? bcdef a bcdef C:\>
set
set /a calc=3*6 >nul上をプロンプトで実行すると、18が標準出力される。これもnulに渡すことで表示させないようにもできる。
One-linerに含まれるときの標準出力抑制として使える。
Batでは標準出力されないらしい。
Set - DOS コマンド一覧 - Programming Field
set /a calc1=3*6,calc2=2*7,で連続記述できる模様。そうしているサンプルを見てできた。 set /p には、改行しないことを利用しての副次的な利用法、上下している2行を1行に連結させる、という使い方 ができるらしい。本来は入力を受けるためのもの。
ファイルの更新時間を秒まで表示できる。
forfiles /C "cmd /c echo @file @fsize @ftime"
Tech TIPS:Windowsのforfilesコマンドで条件に合うファイルを取り出して処理する - @IT
空ファイルを作成する
探すといくつか見つかるけれど、自然で理解しやすい方法は
type nul> file.txt
少ない入力でエラーMSGを気にしないならば
con> file.txt
でもいい。たまたま間違えたが、空ファイルは作成されていた。
行数を出力する
他に方法があるかもしれないけれど
findstr /n $ <file> | find /c ":"
テキストをファイルへと出力する
copy con out.txt A B C D (CtrlZ)
Reference:
DOS コマンド一覧 - Programming Field >> これがなければここまで作れはしなかっただろう、BAT作るなら必読のサイト。 Ref.
炎のコマンドプロンプト入門/コマンド辞典/ファイル操作コマンド