2012年5月2日水曜日

[Windowsコマンド] コマンドでユーザ入力を求める

Windows コマンドプロンプトで、ユーザ入力を求めるコマンドの一覧

・CHOICE コマンド

ユーザに選択を求める方法
入力結果は ERRORLEVEL 環境変数に選ばれたキーのインデックスが設定されます。

CHOICE /C YNC /M "Yes[Y], No[N], Cancel[C]"
ECHO %ERRORLEVEL%

・SET コマンド

ユーザに文字列を入力させる方法
P オプションを利用して、環境変数にユーザ入力テキストを設定します。

SET /P input1=
ECHO %input1%

・PAUSE コマンド

何の入力でも良いので、ユーザ入力があるまで待つ方法
入力内容は受け取れません。

[分類:逆引き コマンドプロンプト]

[Windowsコマンド] Windowsで、Shellコマンドを代用する


全く同じではないが、Shellと類似の処理を行うWindowsコマンドの一覧
(ただし cd などのコマンドは除く)

・cat ファイル名

TYPE ファイル名

・cut -d ' ' -f1 ファイル名

ファイルの各行で、スペース区切りの1列目のみを出力する方法は
FOR /F "tokens=1" %i IN (sample1.txt) DO @ECHO %i

・diff ファイル名1 ファイル名2

FC ファイル名1 ファイル名2

・> /dev/null (リダイレクト)

コマンドの標準出力を表示させない方法は
ECHO sample1 > NUL

・grep 文字列 ファイル名

FINDSTR 文字列 ファイル名
これは正規表現で検索することも可能
パイプ処理で渡されたテキストに対して検索することもできます。
DIR | FINDSTR "sample1"

・pwd

カレントディレクトリ
ECHO %CD%

・touch ファイル名

空のファイルを作成する方法は
TYPE NUL > ファイル名

・wc -l

ファイルの行数を出力する方法は
FIND /V /C  "" ファイル名

・which コマンド名

コマンドのパスを出力する方法は
WHERE コマンド名

[分類:逆引き コマンドプロンプト]

[Windowsコマンド] テキストファイルに行番号を振る方法

テキストファイルに行番号を振って、"標準出力"する方法です。

・空のファイルと FC で比較する

先に空のファイル(null.txt)を作って比較します。
TYPE NUL > %TEMP%\null.txt
FC /N sample1.txt %TEMP%\null.txt

でも出力結果に余分なものが多いのが難点

・FIND で行全てを出力する

FIND /V /N "" sample1.txt

FC よりはスッキリとした結果になる


思うような形式で出力したい場合は、ロジックでファイルに出力するしかなさそうだ。

[分類:逆引き コマンドプロンプト]

2012年5月1日火曜日

[Windowsコマンド] ファイルの内容を変数に代入する


ファイルのテキストを環境変数に代入する方法
1行コマンドでできる範囲で、いくつかのパターンを整理してみました。

・ファイルの1行目のテキストを代入する

これは最もシンプルです。

SET /P test1=<file1.txt

・ファイルの特定の行のテキストを代入する

例えば行に目印となるテキストを付ける場合。
'target1' という目印を付けた行のテキストを代入する。

FOR /F %i in ('FIND "target1" file1.txt') DO @SET test1=%i

・ファイルの最終行のテキストを代入する

ファイルの行数が分かっている場合は、行をスキップします。
行数が100ならば、99行をスキップすれば最終行となる。

FOR /F "skip=99" %i in (file1.txt) DO @SET test1=%i


※バッチ プログラムなどでは、FORコマンドの %i は %%i を使用します。

[分類:逆引き コマンドプロンプト]