仕事で使えるかも知れないWindows コマンド&ワンライナー集 + バッチファイル


コマンドプロンプトはとりあえず 「winキー + R」って打ってcmdで開こう

背景

PowerShellとかWSLとか一切無いような環境で作業する機会が発生しました。
コマンドプロンプトはcdとdirぐらいしか使ったこと無いから嫌だとか言ってる場合でも無いので
とりあえず備忘録的にまとめました。

特に目新しいものでもなくホントの初心者の初心者用の記事です。
ワンライナーとか便利コマンドあれば是非コメントください。

基本コマンド

コマンド 内容 使いそうなオプション
dir 現在のフォルダ内にある、ファイル、フォルダの一覧を示す
cd フォルダの移動。cdの後にパスを指定します
tree ディレクトリをツリー形式で表示 /F 配下のファイルも全て表示
xcopy ファイルをディレクトリ構造ごとコピーする /H 隠しファイルも全てコピー /Y 上書き確認無し
copy ファイルをコピーする
del ファイルの削除 /P 確認メッセージ入れる
md ディレクトリの作成
rm ディレクトリの削除
ren ファイルやディレクトリのリネーム
cls 画面のクリア
type ファイルの内容を表示
more ページャ。なぜかlessは無い。。。 /e 拡張機能有効
fc 2ファイルを比較
find ファイル内の文字列を検索 /V 検索結果を含まない行だけ /C検索文字列の行数
findstr ファイル内の文字列を正規表現を使って検索
exit コマンドプロンプトを終了する

ネットワーク系

コマンド 内容 使いそうなオプション
ipconfig TCP/IPネットワーク設定を確認 /all 詳細な設定を全て表示
ping 目的のIPアドレスまでパケットが正常に到達するか確認 -L パケットサイズ指定 -N 送信回数指定
tracert データの転送ルートを確認
netstat ネットワーク統計情報の表示
route IPルーティング・テーブルの表示
pathping ネットワーク転送の追跡
nslookup DNSネーム・サーバー情報の表示
arp ARPキャッシュの表示および変更
ftp FTPサーバーとの通信
rcp ファイルのリモート・コピー
rsh コマンドのリモート実行
schtasks スケジュールされているタスクを表示

システム系

コマンド 内容 使いそうなオプション
systeminfo システム構成やOS・ネットワークなどの設定情報を確認 /fo csv csv形式で表示する
shutdown シャットダウンだったり再起動を行う -r 再起動 -a シャットダウン中止
eventcreate カスタムイベントを作成する
ver Windowsのバージョン表示
chkdsk ディスクの状態をチェックし、エラーを修復

その他

コマンドのman的なのを見る

基本的にコマンド + /? でコマンドの使い方が見れる

$ dir /?
ディレクトリ中のファイルとサブディレクトリを一覧表示します。

DIR [ドライブ:][パス][ファイル名] [/A[[:]属性]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]ソート順]] [/P] [/Q] [/R] [/S] [/T[[:]タイムフィールド]] [/W] [/X] [/4]


  [ドライブ:][パス][ファイル名]
              一覧表示するドライブ、ディレクトリ、またはファイルを指定します。

  /A          指定された属性のファイルを表示します。
  属性        D  ディレクトリ                R  読み取り専用
              H  隠しファイル                A  アーカイブ
              S  システム ファイル           I  非インデックス対象ファイル
               L  再解析ポイント             -  その属性以外
  /B          ファイル名のみを表示します (見出しや要約が付きません)。
  /C          ファイル サイズを桁区切り表示します。これは
              既定の設定です。/-C とすると桁区切り表示されません。
  /D          /W と同じですが、ファイルを列で並べ替えた一覧を表示します。
  /L          小文字で表示します。
  /N          ファイル名を右端に表示する一覧形式を使用します。
  /O          ファイルを並べ替えて表示します。
  ソート順    N  名前順 (アルファベット)     S  サイズ順 (小さい方から)
              E  拡張子順 (アルファベット)   D  日時順 (古い方から)
              G  グループ (ディレクトリから) -  降順
続行するには何かキーを押してください . . . 

使ってみた

今開いているディレクトリをエクスプローラーで表示

コマンドプロンプトで操作しながらアプリの起動とかをマウスで行ったり

$ start .

拡張子を一括変換

txtをdatへ一括で変換しています。
一括削除も同じ感じで使える。

$ rename *.txt *.dat

$ del *.bak

ファイアフォールを無効化する

$ netsh advfirewall set allprofiles state off

$ Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False

ネットワークのドライブ割り当て

$ net use ドライブレター: \フォルダパス パスワード /user:ユーザアカウント

プロセスの利用ポート一覧を表示する

-bを追記すればプロセス名も取得できる

$ netstat -ano

プロセスIDからプロセス名を特定する

指定したPIDに対応するアプリケーション名が得られる

$ tasklist /FI "PID eq 2780"

特定のポートを使用しているプロセスを表示

$ netstat -oan | findstr ":80"

連番のIPアドレスのマシンに対してping

$ for %i in (1,2,3) do ping 192.168.0.%i

複数ファイルをまとめて出力する

$ type *.txt

カレントディレクトリにある特定のファイルを一括で開く

$ for %V in ( *.txt ) do %V

ファイル内容の単語をキーにしてファイルの行を検索

$ findstr /n /s "hoge foo" *.txt

ファイルをツリー形式で表示

$ tree /f

出力結果をクリップボードへコピー

「コマンド + | clip」で出力結果がコピーされる
これは結構便利かも

$ dir | clip

一つ前のディレクトリへ戻る

linuxでいう「cd -」的なやつ。記憶できるのはちょっと便利

# 戻ってきたいディレクトリを記憶
$ pushd .

# 戻る
popd

環境変数を参照/編集

環境変数の設定どこだよって何度もなるので

# 参照(全部)
$ set

# 参照(特定のもの)
$ echo %path:;= / %

# 編集(末尾へ追記)
$ set PATH=%PATH%;C:\HogeHoge

# 編集(先頭へ追記)
$ set PATH=C:\HogeHoge;%PATH%

バッチファイル

いろんなディレクトリから特定のファイルの収集

ファイル名に「test_」と付いているファイルだけを集める

@echo off

dir /b /s test_*.txt > list.txt

for /f %%a in (list.txt) do (
  copy "%%a" ./test_dir/
)

日付取得

ログ用とかに日付や時間が欲しいとき

@echo off

set YYYYMMDD=%DATE:/=%
dir > result.txt.%YYYYMMDD%

小技

エクスプローラからコマンドプロンプトに移動する

エクスプローラーで任意のディレクトリを開いた状態で「shift + 右クリック」で[コマンドウィンドウをここで開く]を選択
コマンドプロンプトのカレントディレクトリが上のディレクトリで開かれる

ドライブの切り替え

CドライブからDドライブへ移動

d:[ENTER]

文字列操作

Vを変数としたときに表示フォーマットの指定
文字列操作は意外と直感的に使える。

%V% 
変数Vの値全体|%V% ⇒「ABCDEFGHIJKL」

%V:~m%
m文字目から、最後まで|%V:~5% ⇒「FGHIJKL」

%V:~m,n%
m文字目から、n文字分|%V:~5,2% ⇒「FG」

%V:~m,-n%
m文字目から、最後のn文字分を除いたもの|%V:~5,-2% ⇒「FGHIJ」

%V:~-m%
後ろからm文字目から、最後まで|%V:~-5% ⇒「HIJKL」

%V:~-m,n%
後ろからm文字目から、n文字分|%V:~-5,2% ⇒「HI」

%V:~-m,-n%
後ろからm文字目から、最後のn文字分を除いたもの|%V:~-5,-2% ⇒「HIJ」

所感

3日程作業したが全く慣れなかった。
とりあえずいろいろまとめたが多分しばらく慣れないと思う。

参考URL

Windowsコマンド集
IT屋必見! 『コマンドプロンプト』のストレスが少し減る小技集
『コマンドプロンプト』で使えるコマンド一覧