Windows コマンドプロンプト コマンド一覧

**なんとなく使いそうなものだけ記載。**

## 目次
1. [ドライブ, ディレクトリ系](#1-ドライブ-ディレクトリ系)
1. [ファイル系](#2-ファイル系)
1. [ネットワーク系](#3-ネットワーク系)
1. [その他](#4-その他)

## 1. ドライブ, ディレクトリ系

### ドライブの移動
ドライブの移動について。

```powershell
# ドライブを移動する
$ ドライブ名:
$ d:
```

### cd/chdir
カレントディレクトリを表示、移動する。

```powershell
# カレントディレクトリを表示する
$ cd

# カレントディレクトリを移動する
$ cd 相対パス[もしくは絶対パス]
$ cd ./test    # 相対パス
$ cd d:¥test   # 絶対パス
```

### pushed/popd
スタックに記憶(もしくは取り出す)した上で、カレントディレクトリを移動する。

```powershell
# スタックに記録したディレクトリのリストを表示する
$ pushed

# スタックに記録した上で、カレントディレクトリを移動する
$ pushed ディレクトリパス
$ pushed .¥test

# スタックに記録したディレクトリへカレントディレクトリを移動する
$ popd
```

### md/mkdir
ディレクトリを新規作成する。

```powershell
# ディレクトリを新規作成
$ md パス
$ md test2
```

### rd/rmdir
ディレクトリを削除する。

```powershell
# ディレクトリを削除
# フォルダ内にファイルがある場合は、削除できない
$ rd パス
$ rd test2

# フォルダ内にファイルがある場合でも削除する
$ rd /s パス
$ rd /s test2

# フォルダ内にファイルがある場合でも削除する(確認なし)
$ rd /s /q パス
$ rd /s /q test2
```

### mklink
シンボリックリンクを作成する。

```powershell
# シンボリックリンクを作成する
# オプションを指定しない場合は、ファイルへのシンボリックリンクを作成する
$ mklink [オプション] シンボリックリンク名 リンクのパス
$ mklink MyFolder .¥test¥test1.txt

# オプション
# /d ディレクトリへのシンボリックリンクを作成する
# /h シンボリックリンクの代わりにハードリンクを作成する
# /j ディレクトリの分岐点を作成する
```


## 2. ファイル系

### dir
ディレクトリにあるファイル、サブディレクトリを表示する。

```powershell
# ディレクトリにあるファイル、サブディレクトリを表示する
# パスを指定しない場合は、カレントディレクトリを基準とする
$ dir [パス] [オプション]

# カレントディレクトリが基準
$ dir

# testフォルダの中を表示
$ dir test

# オプション一覧
# /a:属性 指定した属性のファイルだけを表示(属性のリストは省略)
# /b ファイル名、ディレクトリ名だけ表示
# /w 横方向にワイド形式で表示 
# /d 縦方向にワイド形式で表示
# /o:ソート順 ソートして表示(ソート順のリストは省略)
# /s サブディレクトリ内のファイル、ディレクトリも表示
```

### tree
ディレクトリ構造をツリー形式で表示する。

```powershell
# ディレクトリ構造をツリー形式で表示する
# パスを指定しない場合は、カレントディレクトリを基準とする
$ tree [パス] [オプション]
$ tree

# オプション
# /a ASCII文字を使って表示
# /f ディレクトリ名だけでなく、ファイル名も含めて表示
```

### ren/rename
ファイル名を変更する。

```powershell
# ファイル名を変更する
$ ren 変更前ファイル 変更後ファイル
$ ren test1.txt test2.txt

# パスを指定してファイル名を変更することも可能
$ ren src¥test1.txt test2.txt
```

### del/erase
ファイルを削除する。

```powershell
# ファイルを削除する
$ del [オプション] 削除対象ファイル
$ del test1.txt

# ファイルを複数削除
$ del test1.txt test2.txt

# オプション
# /p ファイルを削除するときに確認メッセージを出す
# /f 読み取り専用属性のファイルを削除する
# /s サブディレクトリの中も含めて削除する
# /q ワイルドカードを使って削除するときに、確認メッセージを出さないようにする
# /a:属性 指定したファイル属性のファイルを削除する(これは省略)
```

### copy
ファイルをコピーする。

```powershell
# ファイルをコピーする
$ copy [オプション] 元ファイル群 コピー後ファイル名
$ copy test1.txt test2.txt

# 複数コピーする
# コピー後ファイル名のところはパスを入れる
$ copy *.txt C:¥test

# ディレクトリにあるファイルをまるごとコピーする
$ copy C:¥test1 C:¥test2

# 複数のファイルを一つにまとめてコピーする
# +をつける
$ copy memo1.txt+memo2.txt memo_all.txt

# オプション
# /a テキストファイルとしてコピー
# /b バイナリファイルとしてコピー
# /d 元ファイルが暗号化されている場合コピー先は削除
# /y 上書き確認を行わない
# /-y 上書き確認を行い
```

### xcopy
ディレクトリをコピーする。ディレクトリ内のファイルもコピーできる。

```powershell
# ディレクトリをコピーする
$ xcopy コピー元ディレクトリ コピー先ディレクトリ [オプション]
$ xcopy test1 test2 /e

# オプション
# /a アーカイブ属性があるファイルのみコピーする（属性はそのまま）
# /c エラーが発生しても無視して続行する
# /d コピー元の日付が新しい場合のみコピーする
# /d:日付 指定した日付以降に変更されたファイルのみコピーする例）2018/07/01を指定⇒D:07-01-2018
# /e サブディレクトリもコピーする
# /h 隠しファイルやシステムファイルもコピーする
# /i コピー先のディレクトリが存在しない場合は作成する
# /k 属性もコピーする
# /l コピーしたファイル名を表示する
# /m アーカイブ属性があるファイルのみコピーする（属性は解除）
# /o ファイルの所有権や権限もコピーする
# /p コピー前に確認メッセージを表示する
# /q コピーしたファイル名を表示しない
# /r 読み取り専用ファイルを上書きする
# /s サブディレクトリもコピーする（空の場合を除く）
# /t ディレクトリのみコピーする（空のディレクトリも対象としたい場合は/Eを同時に指定する）
# /u コピー先に既に存在するファイルのみコピーする
# /w コピー開始前に、任意のキー入力を求める
# /y 上書きとなる場合でも確認メッセージを表示しない
# /-y 上書きとなる場合は確認メッセージを表示する（デフォルト）
```

### move
ファイルの移動、もしくはディレクトリ名の変更を行う。

```powershell
# ファイルの移動、もしくはディレクトリ名の変更を行う
$ move [オプション] 元ファイル 移動先

# testフォルダにtest.txtを移動
$ move test.txt test

# 名称変更もできる
$ move test1.txt test2.txt

# オプション
# /y 上書きとなる場合でも確認メッセージを表示しない
# /-y 上書きとなる場合は確認メッセージを表示する（デフォルト）
```

### attrib　
ファイル属性の表示と変更を行う。

```powershell
# ファイル属性の表示と変更を行う
$ attrib [オプション] ファイル名
$ attrib +r test.txt

# オプション
# /d ディレクトリも対象とする（/sオプションを同時に指定する必要あり）
# /s サブディレクトリも対象とする
# /l SymbolicLinkのターゲットに対するSymbolicLinkの属性で動作する
# +r もしくは -r 読取り専用属性を設定/解除する
# +a もしくは -a  アーカイブ属性を設定/解除する
# +s もしくは -s  システムファイル属性を設定/解除する
# +h もしくは -h  隠しファイル属性を設定/解除する
# +i もしくは -i  非インデックス対象ファイル属性を設定/解除する
```

### type
テキストファイルの内容を表示する。

```powershell
# テキストファイルの内容を表示する
$ type ファイル名
$ type test1.txt

# ファイルは複数指定することが可能
$ type test1.txt test2.txt
```

### find
ファイル内やコマンドの出力結果に含まれる文字列を検索する。

```powershell
# ファイル内やコマンドの出力結果に含まれる文字列を検索する
$ find [オプション] 検索文字列 ファイル名
$ find "test" test.txt

# オプション
# /n 行番号を表示する
# /v 指定した文字列を含まない行を検索対象とする
# /c 検索対象の行数を表示する
# /i 大文字小文字を区別しない
```

### fc
2つのファイルの内容を比較して表示する。

```powershell
# 2つのファイルの内容を比較
$ fc [オプション] ファイル1 ファイル2
$ fc test1.txt test2.txt

# オプション
# /a 比較結果を省略して表示する（テキストモードのみ）
# /b バイナリモードで比較する
# /l テキストモードで比較する
# /c 大文字小文字を区別しない
# /n 行番号を表示する（テキストモードのみ）
# /t タブ文字をスペースに変換しない
# /u 文字をUnicodeとして扱う
# /w 連続したタブやスペースを１つのスペースとして比較する
```

### sort
ファイルの内容を行単位でソートする。

```powershell
ファイルの内容をソートして表示する
$ sort [オプション] ファイル名
$ sort test.txt

# test2.txtのソート内容をtest1.txtに出力する
$ sort /o test1.txt test2.txt

# オプション
# /+n 指定した行数以降でソートする
# /m サイズ(KB) ソートに使用するメモリサイズを指定する
# /o ファイル名 結果を指定したファイルに出力する
# /r 降順にソートする
```

### where
ファイル名からファイルの場所を表示する。

```powershell
# ファイル名からファイルの場所を表示する
$ where [オプション] ファイル名パターン
$ where *.txt

# オプション
# /r パス 検索対象のディレクトリを指定する
# /q 結果としてファイル名を表示せず、終了コードのみを返す（0：検索結果あり　1：検索結果なし　2：エラー）
# /f 結果のファイル名をダブルクォーテーションで囲って表示する
# /t ファイルサイズ、ファイル更新日時も表示する
```

## 3. ネットワーク系

### ipconfig
TCP/IPアドレスを表示する。

```powershell
# IPアドレスを表示する
$ ipconfig 

# /allオプションで詳細な設定を全て表示する
$ ipconfig /all
```

### ping
目的のアドレスまで、正常に通信できるか確認する。

```powershell
# 指定IPアドレスまでネットワークがつながっているか確認する
$ ping [オプション] [IPアドレス]
$ ping 192.168.1.1

# オプション
# -t 停止(Ctrl+C)するまでパケットを送信し続ける
# -n パケットの送信回数
# -4 pv4の使用を強制する
# -6 pv6の使用を強制する
# 一応もっとある
```

### netstat
使用中のポートを表示する。

```powershell
# 使用中のポートを表示する
$ netstat [オプション]
$ netstat

# オプション
# /a すべて表示、待ち受けのポートも表示
# /n 対象全て表示、ホスト名ではなくIPアドレスで表示
```

### nslookup
ドメイン名からIPアドレス、もしくはIPアドレスからドメイン名を取得する。

```powershell
# ドメイン名からIPアドレス、もしくはIPアドレスからドメイン名を取得する。
$ nslookup [ドメイン名/IPアドレス]

$ nslookup yahoo.co.jp
$ nslookup 192.168.1.1
```

### tracert
ネットワークの経路を表示する。

```powershell
# ネットワークの経路を表示する
$ tracert [ドメイン名/IPアドレス]

$ tracert yahoo.co.jp
$ tracert 192.168.1.1
```

## 4. その他

### start
コマンドプロンプトを別ウィンドウで開始する。

```powershell
# 別ウィンドウでコマンドorプログラムを実行する
$ start [コマンド/プログラム] [引数]

# 別ウィンドウを開き、指定コマンドを実行する
$ start dir

# 他のプログラムを開く(myapp.exeを開く)
$ start myapp "ABC"
```

### exit
コマンドプロンプトを閉じる。

```powershell
# コマンドプロンプトを閉じる
# exit [/b] [終了コード]
$ exit

# /bオプションを付けると、呼び出したバッチファイルのみを閉じることができる
# これはバッチファイル側に記載する
$ exit /b

# 終了コードを設定して終了する
# %errorlevel%で参照できる
$ exit /b 1
```

### help
コマンドのヘルプを表示する。

```powershell
# コマンド名を入力して、指定したコマンドのヘルプを表示する
$ help コマンド名
$ help cd

# 別の書き方もできる
$ コマンド /?
$ dir /?
```

### date
日付の表示、設定をする。

```powershell
# 現在日付を表示し、その後新しい日付を設定する
$ date

# 現在日付だけ表示して終わる
$ date /t

# 新しい日付を設定する
$ date 2021/11/16
```

### time
時刻の表示、設定をする。

```powershell
# 現在時刻を表示し、その後新しい時刻を設定する
$ time

# 現在時刻だけ表示して終わる
$ time /t

# 新しい時刻を設定する
$ time HH:MM:SS.NN
$ time 22:18:30
```

### cls
コマンドプロンプトの他のコマンドの実行結果を消去して画面をきれいにする。

```powershell
# 画面をクリーンする
$ cls
```

### chcp
コマンドプロンプトの文字コードを確認、設定する。

```powershell
# コマンドプロンプトで使用されている文字コードを確認する
$ chcp

# コマンドプロンプトで使用される文字コードを設定する
$ chcp [文字コード番号]

# shift_jisに変更
$ chcp 932 

# 文字コードの番号
# shift_jis : 932
# us-ascii  : 20127
# euc-jp : 51932
# utf-8  : 65001
```