キミは、バッチファイル(*.bat)でREM以外でコメントアウトする方法を知ってるか?


Unix/Linuxのシェルは#の1文字でコメントアウトができるが
バッチファイルは、REMコマンドを使う必要があって3文字も
打たなければならないので、メンドウ。
1文字でコメントアウトすることができないか試してみた。

DOSKEYで#をREMに割り当てる方法

バッチファイル
@echo off
doskey /INSERT #=REM $*
doskey /macros
# echo test
echo test2
# echo test3
echo test4
doskey /macros
結果
D:\workspace\batch_SandBox>D:\workspace\batch_SandBox\comment.bat
#=REM $*
'#' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test2
'#' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test4
#=REM $*

D:\workspace\batch_SandBox># echo test

D:\workspace\batch_SandBox>doskey /macros
#=REM $*

D:\workspace\batch_SandBox>D:\workspace\batch_SandBox\comment.bat
#=REM $*
'#' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test2
'#' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test4
#=REM $*

NG!!
コマンドプロンプトのプロセスに対しては、#がREMに割当られてるのだが
バッチファイルの中では実行できないようだ。


:を使う

本来は、「:」はラベルだがそのラベルに対応するGOTO文がなければ
何も実行されないため、意味をなさないラベルになる。
なので、コメントアウトもどきにつかことができそうだ。

バッチファイル
@echo off
echo test1
:echo test2
echo test3
:echo test4
結果
D:\workspace\batch_SandBox>D:\workspace\batch_SandBox\comment2.bat
test1
test3


OK!!

GOTO文があっても大丈夫

オリジナル

@echo off
if {%1}=={} goto USAGE
REM set /A count=1
set /A count=1
:FIRST
if %count% GTR %1 goto END
echo %count%


REM 繰り返し実行したい処理

set /A count=%count%+1
goto FIRST

:USAGE
echo 回数を指定してください

:END

コメントアウト

:if {%1}=={} goto USAGE
:set /A count=1
::FIRST
:if %count% GTR %1 goto END
:echo %count%
:
:
:REM 繰り返し実行したい処理
:
:set /A count=%count%+1
:goto FIRST
:
::USAGE
:echo 回数を指定してください
:
::END
echo comment out
結果
D:\workspace\batch_SandBox>echo comment out
comment out

OK!!



Windows コマンドプロンプト ポケットリファレンス
4774149543

これがあるからWindowsでckwを使うと言っても過言ではない便利なショートカットキー

ckwのCtrl関連のショートカットキーを簡単にまとめます。
他にも何かあったかもしれないけど、主に使っているのはこれだけです。
Emacs使っている人は、Emacsのショートカットが結構使えるのよ、と覚えておけばおkです)


全部Ctrlキーとの組み合わせ

全て、Ctrlキーを押しながらアルファベットを押すことで動作します。
ちなみに、Ctrlキーは変な場所にあるので、以下のようにレジストリの変更で、
Caps LockキーをCtrlキーとして設定しておくのがオススメです。

1. 以下の内容をcaps_lock_to_control.regに保存

(Windows 2000 Server、Windows 2003 Server、Windows XPWindows 7で動作している。)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00 
2.ファイルを選択して、右クリックから結合
3.その後再度ログインすればいい。

個人的によく使うもの順に並べていきます。
(以下、Ctrlキーを押しながら何らかのキーを押す操作を C + キー と表記)

C+a、C+e

その行の「行頭」「行末」に移動。”a”はアルファベットの最初の文字だから、
”e”は end の意味だと思う。Ctrl絡みのショートカットは、とにかく
ホームポジションの変更がほとんど必要ないことが重要である。

C+f、C+b

「一文字進む」「一文字戻る」
forward backwardの略(多分)

カーソルキー(矢印)でももちろん操作可能だが、カーソルキーとか遠すぎて
無理という超ナマケモノには必須である。

C+n、C+p

「履歴を進める」「履歴を遡る」(ようするに、矢印の下と上)
next と previous(多分)

カーソルキー(矢印)でももちろん操作可能だが、カーソルキーとか遠すぎて
無理という超ナマケモノには必須である。

C+k、C+y

カーソル位置から行末までをkill(削除)
そして、C+yでkillしたものを貼り付ける。
普通の「Ctrl+C」同じクリップボードを使用するので、C+kで切り取ったもの
意外にも他のアプリでコピーした内容も張り付けられる。

C+a のあと、C+kとかよく使う。

kill&yankの略。
yank は、「 引っ張ること」だから、変数kill-ringから引っ張りだすことに
由来していると思うのだが、killの由来は分からん。
日本人なら kill=切る のダジャレで覚えられるけど。

C+h、C+d

いわゆる「バックスペース」と「デリート」
C+hでカーソルから一文字戻って削除。C+dでカーソルの一文字先を削除。

C+l

clsコマンドと同じ(unixのclear)
テスト前とかにコマンド実行前に画面を綺麗にして、どこから始めたかを確認しやすく
するために使う。

C+t

一文字入れ替える。

abcdefg
     ↑
      カーソルをfに合わせて C+tとするとfとeが入れ替わる
abcdfeg

自分は全然使わないっす。気が向いたら試してみてください。

C+o、C+vは使えない。

C+oはEnterと同じだと思うんだけど、C+v(Macで)ってどうな動作するんだ?

かるくまとめ

Windowsだと、ショートカットキーを変更するようなソフトは存在するので、
頑張ればGUIでもこういったショートカットキーの設定は可能だと思います。

ただ、Windowsだとこれが「標準」で使えないところが大きい。
だんだんPCをカスタマイズすることすら大好きになってきました。
Windowsの魅力の一つとして「標準」が全然快適でないこと。
自分色に染め放題、カスタマイズし放題です。
これ個人的に重要なポイントです。

あと、こういうのは一度に全部覚えるとか無理です。

まずは、Ctrl+a , Ctrl+e の2つ。これを覚えておくのが良いのではないかと。


これがあるからMacを使うと言っても過言ではない便利なキーボードショートカット
ほとんどこの記事にインスパイアされた内容であることは秘密である。

バッチファイルでファイルパスからファイル名や拡張子を自由に取り出す方法

ファイルパスからファイル名や拡張子を自由に取り出す
でシェルについて書かれていたのでそのバッチファイル版

説明

    %~I         - すべての引用句 (") を削除して、I を展開します。
    %~fI        - %I を完全修飾パス名に展開します。
    %~dI        - %I をドライブ文字だけに展開します。
    %~pI        - %I をパス名だけに展開します。
    %~nI        - %I をファイル名だけに展開します。
    %~xI        - %I をファイル拡張子だけに展開します。
    %~sI        - 展開されたパスは短い名前だけを含みます。
    %~aI        - %I をファイルの属性に展開します。
    %~tI        - %I ファイルの日付/時刻に展開します。
    %~zI        - %I ファイルのサイズに展開します。
    %~$PATH:I   - PATH 環境変数に指定されているディレクトリを
                  検索し、最初に見つかった完全修飾名に %I を
                  展開します。
                  環境変数名が定義されていない場合、または検索
                  してもファイルが見つからなかった場合は、この
                  修飾子を指定すると空の文字列に展開されます。

修飾子を組み合わせて、複合結果を得ることもできます:

    %~dpI       - %I をドライブ文字とパスだけに展開します。
    %~nxI       - %I をファイル名と拡張子だけに展開します。
    %~fsI       - %I を完全なパスと短い名前だけに展開します。
    %~dp$PATH:I - PATH 環境変数に指定されているディレクトリを
                  検索して %I を探し、最初に見つかったファイル
                  のドライブ文字とパスだけに展開します。
    %~ftzaI     - %I を DIR コマンドの出力行のように展開します。

ソース

@echo off
set TEST1=D:\workspace\batch_SandBox\filename.bat
set TEST2="D:\workspace\batch_SandBox\filename.bat"
set TEST3=grep.exe
echo ■フルパス
call :GET_FILENAME %TEST1%
echo ■""でくくったファイルパス
call :GET_FILENAME %TEST2%
echo ■カレントにはなく、環境変数PATHに設定されてるディレクトリにあるコマンド
call :GET_FILENAME %TEST3%
GOTO :END

:GET_FILENAME
echo -オリジナル
echo     %1
echo -すべての引用句 (") を削除して、%変数 を展開します。
echo     %~1
echo -%変数 を完全修飾パス名に展開します。
echo     %~f1
echo -%変数 をドライブ文字だけに展開します。
echo     %~d1
echo -%変数 をパス名だけに展開します。
echo     %~p1
echo -%変数 をファイル名だけに展開します。
echo     %~n1
echo -%変数 をファイル拡張子だけに展開します。
echo     %~x1
echo -展開されたパスは短い名前だけを含みます。
echo     %~s1
echo -%変数 をファイルの属性に展開します。
echo     %~a1
echo -%変数 ファイルの日付/時刻に展開します。
echo     %~t1
echo -%変数 ファイルのサイズに展開します。
echo     %~z1
echo -PATH 環境%変数に指定されているディレクトリを  
echo  検索し、最初に見つかった完全修飾名に %変数 を   
echo  展開します。                                 
echo  環境%変数名が定義されていない場合、または検索 
echo  してもファイルが見つからなかった場合は、この 
echo  修飾子を指定すると空の文字列に展開されます。
echo     %~$PATH:1
echo.
echo 修飾子を組み合わせて、複合結果を得ることもできます:
echo -%変数 をドライブ文字とパスだけに展開します。
echo     %~dp1
echo -%変数 をファイル名と拡張子だけに展開します。
echo     %~nx1
echo -%変数 を完全なパスと短い名前だけに展開します。
echo     %~fs1
echo -PATH 環境%変数に指定されているディレクトリを
echo  検索して %変数 を探し、最初に見つかったファイル
echo  のドライブ文字とパスだけに展開します。
echo     %~dp$PATH:1
echo %変数 を DIR コマンドの出力行のように展開します。
echo     %~ftza1
echo.
echo.
echo.
goto :EOF

:END

結果

[D:\workspace\batch_SandBox]filename.bat
■フルパス
-オリジナル
    D:\workspace\batch_SandBox\filename.bat
-すべての引用句 (") を削除して、%変数 を展開します。
    D:\workspace\batch_SandBox\filename.bat
-%変数 を完全修飾パス名に展開します。
    D:\workspace\batch_SandBox\filename.bat
-%変数 をドライブ文字だけに展開します。
    D:
-%変数 をパス名だけに展開します。
    \workspace\batch_SandBox\
-%変数 をファイル名だけに展開します。
    filename
-%変数 をファイル拡張子だけに展開します。
    .bat
-展開されたパスは短い名前だけを含みます。
    D:\WORKSP~1\BATCH_~1\filename.bat
-%変数 をファイルの属性に展開します。
    --a------
-%変数 ファイルの日付/時刻に展開します。
    2010/09/26 09:00
-%変数 ファイルのサイズに展開します。
    1936
-PATH 環境%変数に指定されているディレクトリを
 検索し、最初に見つかった完全修飾名に %変数 を
 展開します。
 環境%変数名が定義されていない場合、または検索
 してもファイルが見つからなかった場合は、この
 修飾子を指定すると空の文字列に展開されます。
    D:\workspace\batch_SandBox\filename.bat

修飾子を組み合わせて、複合結果を得ることもできます:
-%変数 をドライブ文字とパスだけに展開します。
    D:\workspace\batch_SandBox\
-%変数 をファイル名と拡張子だけに展開します。
    filename.bat
-%変数 を完全なパスと短い名前だけに展開します。
    D:\WORKSP~1\BATCH_~1\filename.bat
-PATH 環境%変数に指定されているディレクトリを
 検索して %変数 を探し、最初に見つかったファイル
 のドライブ文字とパスだけに展開します。
    D:\workspace\batch_SandBox\
%変数 を DIR コマンドの出力行のように展開します。
    --a------ 2010/09/26 09:00 1936 D:\workspace\batch_SandBox\filename.bat



■""でくくったファイルパス
-オリジナル
    "D:\workspace\batch_SandBox\filename.bat"
-すべての引用句 (") を削除して、%変数 を展開します。
    D:\workspace\batch_SandBox\filename.bat
-%変数 を完全修飾パス名に展開します。
    D:\workspace\batch_SandBox\filename.bat
-%変数 をドライブ文字だけに展開します。
    D:
-%変数 をパス名だけに展開します。
    \workspace\batch_SandBox\
-%変数 をファイル名だけに展開します。
    filename
-%変数 をファイル拡張子だけに展開します。
    .bat
-展開されたパスは短い名前だけを含みます。
    D:\WORKSP~1\BATCH_~1\filename.bat
-%変数 をファイルの属性に展開します。
    --a------
-%変数 ファイルの日付/時刻に展開します。
    2010/09/26 09:00
-%変数 ファイルのサイズに展開します。
    1936
-PATH 環境%変数に指定されているディレクトリを
 検索し、最初に見つかった完全修飾名に %変数 を
 展開します。
 環境%変数名が定義されていない場合、または検索
 してもファイルが見つからなかった場合は、この
 修飾子を指定すると空の文字列に展開されます。
    D:\workspace\batch_SandBox\filename.bat

修飾子を組み合わせて、複合結果を得ることもできます:
-%変数 をドライブ文字とパスだけに展開します。
    D:\workspace\batch_SandBox\
-%変数 をファイル名と拡張子だけに展開します。
    filename.bat
-%変数 を完全なパスと短い名前だけに展開します。
    D:\WORKSP~1\BATCH_~1\filename.bat
-PATH 環境%変数に指定されているディレクトリを
 検索して %変数 を探し、最初に見つかったファイル
 のドライブ文字とパスだけに展開します。
    D:\workspace\batch_SandBox\
%変数 を DIR コマンドの出力行のように展開します。
    --a------ 2010/09/26 09:00 1936 D:\workspace\batch_SandBox\filename.bat



■カレントにはなく、環境変数PATHに設定されてるディレクトリにあるコマンド
-オリジナル
    grep.exe
-すべての引用句 (") を削除して、%変数 を展開します。
    grep.exe
-%変数 を完全修飾パス名に展開します。
    D:\workspace\batch_SandBox\grep.exe
-%変数 をドライブ文字だけに展開します。
    D:
-%変数 をパス名だけに展開します。
    \workspace\batch_SandBox\
-%変数 をファイル名だけに展開します。
    grep
-%変数 をファイル拡張子だけに展開します。
    .exe
-展開されたパスは短い名前だけを含みます。
    D:\WORKSP~1\BATCH_~1\grep.exe
-%変数 をファイルの属性に展開します。
ECHO は <OFF> です。
-%変数 ファイルの日付/時刻に展開します。
ECHO は <OFF> です。
-%変数 ファイルのサイズに展開します。
ECHO は <OFF> です。
-PATH 環境%変数に指定されているディレクトリを
 検索し、最初に見つかった完全修飾名に %変数 を
 展開します。
 環境%変数名が定義されていない場合、または検索
 してもファイルが見つからなかった場合は、この
 修飾子を指定すると空の文字列に展開されます。
    C:\usr\bin\grep.exe

修飾子を組み合わせて、複合結果を得ることもできます:
-%変数 をドライブ文字とパスだけに展開します。
    D:\workspace\batch_SandBox\
-%変数 をファイル名と拡張子だけに展開します。
    grep.exe
-%変数 を完全なパスと短い名前だけに展開します。
    D:\WORKSP~1\BATCH_~1\grep.exe
-PATH 環境%変数に指定されているディレクトリを
 検索して %変数 を探し、最初に見つかったファイル
 のドライブ文字とパスだけに展開します。
    C:\usr\bin\
%変数 を DIR コマンドの出力行のように展開します。
    D:\workspace\batch_SandBox\grep.exe

grep.exeは、カレントディレクトリに存在せず、「C:\usr\bin」に存在する。
grep.exe」と記載して変換しようとする場合は、%~$PATH:I、%~dp$PATH:Iのように
$PATHを指定しないならない。
$PATHを指定しないと「.\grep.exe」として誤認してしまう。


この展開方法って「for /?」 にそのまま書いてあるんだけどね。(^ ^;)





Windows コマンドプロンプト ポケットリファレンス
4774149543




conってなに?


はてなのカテゴリーはなんでソートして表示してくれないのか?秀丸から以下のプログラムの実行をした

sort <con >con

「con」ってなにかというと、Windows(MS-DOS時代)からの予約デバイス
コンソール、すなわち現在入出力を行っている画面・キーボードを表す。
標準出力、標準エラー出力を捨てるための 「nul」と同類。
wikipedia 予約デバイス con
CONCON問題かぁー。懐かしいな。


そんな20世紀の遺物の話なんてどうでもいいよと思うかもしれないが、未だにWindowsは引きずっている。
今のWindowsでも、「con」というフォルダは作成できない。

Windows XPの場合

エクスプローラーから作成しようとするとconという名前を付けても「新しいフォルダ」のまま変わらない。
コマンドプロンプトだと、以下のエラーになる。

D:\temp>mkdir con
ディレクトリ名が無効です。

Windows 7の場合

エクスプローラーから作成しようとすると以下のエラーになり、原因が分かるようになった。

指定されたデバイス名は無効です。

コマンドプロンプトの結果はWindows XPと同じ。


例えば、ユーザーがフォルダのパスを指定して、そのフォルダがなかったら作成するプログラムが
あったとする。
ユーザーが、「com」と間違えて「con」と入力してしまった場合に、エラー判定が抜けていると
予期せぬエラー、システムエラーになったりしてしまう。

#include "stdlib.h"
#include "stdio.h"
#include "windows.h"

int main(int argc, char* argv[]){

	if(CreateDirectory("C:\\con_",NULL)){
		printf("ディレクトリ作成成功\n");
	}else{
		printf("ディレクトリ作成失敗(errno=%d)\n",GetLastError());
		return 1;
	}
	if(CreateDirectory("C:\\con",NULL)){
		printf("ディレクトリ作成成功\n");
	}else{
		printf("ディレクトリ作成失敗(errno=%d)\n",GetLastError());
		return 1;
	}

	return 0;
}

結果は以下で、エラーとなる。

D:\workspace\C_SandBox\02Windows\mkdir_con\Debug>mkdir_con.exe
ディレクトリ作成成功
ディレクトリ作成失敗(errno=267)

case文でエラー値で267を判定していないと、
defaultルートに倒れて、システムエラーとなってしまうパターンだ。
ちなみに、エラー値267は「ディレクトリ名が無効です。」である。

関連あるかもしれない記事

バッチファイルのエスケープ文字は^だ!!

バッチファイルで長い1行の処理を改行を入れて複数行に分けて書きたいで分割して書くために^のことを書いた。
エスケープ文字の用途は他にもある。

例えば「|」パイプをエスケープしたい場合。
どういうときにパイプをエスケープしたいかというとFOR文でコマンドを実行してその結果を解析したい場合だ。
しょせんは、もどきです。でも書いてる内容だが、
該当のクラスがどのjarファイルの中に入ってるを検索する処理の時にはdirとfindstrを組み合わせる。
この時にエスケープが必要となるのだ。

@echo off
set FIND_STR=%1
FOR /F "eol=; delims=," %%i in ('dir /s/b/a-d^|findstr jar$') DO CALL :GREP_CLASS="%%i"
GOTO :EOF

:GREP_CLASS
REM jar only
REM jar -tvf %1  |findstr %FIND_STR% >nul 2>&1
REM jar and class name
jar -tvf %1  |findstr %FIND_STR% 2>nul
IF {%ERRORLEVEL%}=={0} echo %1
GOTO :EOF

3行目のFOR文のコマンド部分でサブディレクトリからjarを探すのにパイプを使っていて、
そのパイプの前でエスケープしている。
エスケープしないとそこで処理の切れ目になってしまう。
そのため「^」でエスケープする必要がある。

関連あるかもしれない記事

バッチファイルで長い1行の処理を改行を入れて複数行に分けて書きたい

バッチファイルで1行の処理が長〜いと読みにくいので、複数の行に分けて書きたいこともある。
C言語におけるマクロでの「\」やVBの「_」と同じようなことをしたい。



バッチファイルで1行が長〜い処理というのもあまりないかもしないが、Javaでオプションやら
クラスパスやら設定すると非常に長くなる。
以下のgroovyの起動バッチのように環境変数に追加していき、最後で実行するのが一般的だろう。

set JAVA_OPTS=%JAVA_OPTS% -Dgroovy.starter.conf="%STARTER_CONF%"
set JAVA_OPTS=%JAVA_OPTS% -Dscript.name="%GROOVY_SCRIPT_NAME%"

if exist "%USERPROFILE%/.groovy/postinit.bat" call "%USERPROFILE%/.groovy/postinit.bat"

@rem Execute Groovy
"%JAVA_EXE%" %JAVA_OPTS% -classpath "%STARTER_CLASSPATH%" %STARTER_MAIN_CLASS% --main %CLASS% --conf "%STARTER_CONF%" --classpath "%CP%" %CMD_LINE_ARGS%


もし、これを1行で書くとすると以下のように非常に長くなる。

"C:\usr\opt\java\jdk1.6.0_12\bin\java.exe" -Xmx128m -Dprogram.name="" -Dgroovy.home="C:\usr\opt\groovy" -Dtools.jar="C:\usr\opt\java\jdk1.6.0_12\lib\tools.jar" -Dgroovy.starter.conf="C:\usr\opt\groovy\conf\groovy-starter.conf" -Dscript.name="" -classpath "C:\usr\opt\groovy\lib\groovy-1.6.5.jar" org.codehaus.groovy.tools.GroovyStarter --main org.codehaus.groovy.tools.shell.Main --conf "C:\usr\opt\groovy\conf\groovy-starter.conf" --classpath ".;C:\usr\opt\java\jre6\lib\ext\QTJava.zip;."


これを改行を入れて複数の行に分けるには「^」を最後に付ける。

"C:\usr\opt\java\jdk1.6.0_12\bin\java.exe" ^
-Xmx128m ^
-Dprogram.name="" ^
-Dgroovy.home="C:\usr\opt\groovy" ^
-Dtools.jar="C:\usr\opt\java\jdk1.6.0_12\lib\tools.jar" ^
-Dgroovy.starter.conf="C:\usr\opt\groovy\conf\groovy-starter.conf" ^
-Dscript.name="" ^
-classpath "C:\usr\opt\groovy\lib\groovy-1.6.5.jar" ^
org.codehaus.groovy.tools.GroovyStarter ^
--main org.codehaus.groovy.tools.shell.Main ^
--conf "C:\usr\opt\groovy\conf\groovy-starter.conf" ^
--classpath ".;C:\usr\opt\java\jre6\lib\ext\QTJava.zip;." 

なぜかと言うと、バッチファイルでのエスケープ文字は「^」だから。


しかし、「^」 なんてなかなか試さんし、思いつかんよ。
コマンドのヘルプやコマンドリファレンスにも載ってなさそうだ。
知ってる人にでも教えてもらわないとなかなかたどり着けなさそう。



Windows コマンドプロンプト ポケットリファレンス
4774149543







こんな方法があったのか! Windows用GNUコマンド群 「GNU utilities for Win32」


MOONGIFTでWindows用のGNUのコマンド群が紹介されていた。
シンプルなWindows用Linuxコマンド集「Gow」


No Command, No Life.
でも僕はCygwinは好きではない。


Gowは知らなかったので、僕が使ってるのは、GNU utilities for Win32というもの。
zip形式での配布なので、インストーラもないので、PATHも設定しないし、Command Prompt Hereに
追加なんて気の利いたものもない。


コマンドはGNUのコマンドが揃えられるが、コマンドプロンプト自体が不便。
GNU utilities for Win32にはbin\sh.exeが入ってるが、文字化けしたりする。
なので、♪UnixのようでUnixでない DOSのようでDOSでない
書いているckwとnyacusを使うのがオススメ。
(Command Prompt Hereなんてレジストリにちょろちょろっと書けばいいわけだし。)


ただ、Gowと違ってGNU utilities for Win32の方は更新が止まっててコマンドの
バージョンが古いかも。

GNU utilities for Win32の入ってるこコマンドは以下の119個

  • 構成
    UnxUtils
      ├─bin
      └─usr
          └─local
              ├─include
              ├─lib
              ├─share
              └─wbin
  • bin
    sh.exe
  • usr\local\wbin
    agrep.exe
    ansi2knr.exe
    basename.exe
    bc.exe
    bison.exe
    bunzip2.exe
    bzip2.exe
    bzip2recover.exe
    cat.exe
    chgrp.exe
    chmod.exe
    chown.exe
    cksum.exe
    cmp.exe
    comm.exe
    compress.exe
    cp.exe
    csplit.exe
    cut.exe
    date.exe
    dc.exe
    dd.exe
    df.exe
    diff.exe
    diff3.exe
    dircolors.exe
    dirname.exe
    du.exe
    echo.exe
    egrep.exe
    env.exe
    expand.exe
    expr.exe
    factor.exe
    fgrep.exe
    find.exe
    flex.exe
    fmt.exe
    fold.exe
    fsplit.exe
    gawk.exe
    gclip.exe
    gplay.exe
    grep.exe
    gsar.exe
    gunzip.exe
    gzip.exe
    head.exe
    id.exe
    indent.exe
    install.exe
    join.exe
    jwhois.exe
    less.exe
    lesskey.exe
    ln.exe
    logname.exe
    ls.exe
    m4.exe
    make.exe
    makedepend.exe
    makemsg.exe
    man.exe
    md5sum.exe
    mkdir.exe
    mkfifo.exe
    mknod.exe
    mv.exe
    mvdir.exe
    nl.exe
    od.exe
    paste.exe
    patch.exe
    pathchk.exe
    pclip.exe
    pr.exe
    printenv.exe
    printf.exe
    pwd.exe
    recode.exe
    rm.exe
    rman.exe
    rmdir.exe
    sdiff.exe
    sed.exe
    seq.exe
    shar.exe
    sleep.exe
    sort.exe
    split.exe
    stego.exe
    su.exe
    sum.exe
    sync.exe
    tac.exe
    tail.exe
    tar.exe
    tee.exe
    test.exe
    touch.exe
    tr.exe
    type.exe
    uname.exe
    unexpand.exe
    uniq.exe
    unrar.exe
    unshar.exe
    unzip.exe
    uudecode.exe
    uuencode.exe
    wc.exe
    wget.exe
    which.exe
    whoami.exe
    xargs.exe
    yes.exe
    zcat.exe
    zip.exe


Happy Command Life






関連あるかもしれない記事