Edited at

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

RE2EbDL.jpg

コマンドプロンプトはとりあえず 「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屋必見! 『コマンドプロンプト』のストレスが少し減る小技集

『コマンドプロンプト』で使えるコマンド一覧