【bat】windowsでlsコマンドpwdコマンドを使えるようにする

こんにちは、kazuです。
あなたはコマンドプロンプトとLinuxどちらのコマンドをよく使いますか?
私はLinuxコマンドの方をよく使用します。
そしてこの記事を見ている方は次の体験をしたことがあるかと思います → 「このディレクトリlsで見てみよう!」「ls (カタッ)」「コマンドプロンプト:ls、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」「あ、ちっ(舌打ち)間違えた。。」ということです。今回の記事はコマンド押した後の動きはdirコマンドと同じですが、打つコマンドは「ls」にする方法です。

今回の環境

OS:Windows10 Home
CUI:コマンドプロンプト
作成:bat

今回の作成コマンドの説明

ls

lsコマンドを叩くとファイル一覧を表示します。

pwd

pwdコマンドを叩くと現在のパスが表示されます。

lsコマンドのコードを見てみよう

ではさっそくコードを見てみよう!
といいたいところですが今回の実行方法の説明をさせてください。
先程コマンドプロンプトでlsと叩くという説明をしましたが、そのほかにもオプションをいくつか設定したいと思います。
今回のオプションコマンドは以下表に記載します。

オプション 説明
なし dirと同じ通常ディレクトリ確認
-a 隠しファイルを表示
-w ワイド一覧形式で表示(左から右)
–make-time 作成日時順に表示
-q ファイル所有者を表示
-b ディレクトリ名とファイル名のみ表示
–last-update 最終更新日時を表示
@echo off
echo "コマンド説明 [ls help]"
rem オプションは%1で取得している
echo %%1 = %1
rem オプション無し
if [%1]==[] (
  dir
  echo "exit"
 rem exitを設定している理由はこのまま続けるとnullのためエラーが起きてしまう
  exit /b
)

rem オプション%1とオプションが一致するか確認している
if %1==-a (
 rem オプション -a
  dir /A:h
  echo "-a"
) else if %1==-w (
  rem オプション -w
  dir /W
  echo "-w"
) else if %1==-s (
  rem オプション -s
  dir /O:s
  echo "-s"
) else if %1==--make-time (
  rem オプション --make-time
  dir /T:c
  echo "--make-time"
) else if %1==-q (
  rem オプション -q
  dir /Q
  echo "-q"
) else if %1==-b (
  rem オプション -b
  dir /B 
  echo "-b"
) else if %1==--last-update (
  rem オプション --last-update
  dir /T:w
) else if %1==help (
  rem オプション help
  echo "ls 通常ディレクトリ確認"
  echo "ls -a 隠しファイルを表示"
  echo "ls -w ワイド一覧形式で表示(左から右)"
  echo "ls --make-time 作成日時順に表示"
  echo "ls -q ファイル所有者を表示"
  echo "ls -b ディレクトリ名とファイル名のみ表示"
  echo "ls --last-update 最終更新日時を表示"
) else (
  echo "コマンドオプションが正しくありません"
)

pwdコマンドのコードを見てみよう

pwdについてはLinuxと同じようにファイルパス表示だけなのでオプションは無しで実装していきます。

@echo off
@cd %1

PATHを設定する

最後にbatファイルを作成したらPATHを設定する必要があります。なぜならどこのディレクトリにいてもコマンドを打てるようにしたいからです。
Linuxコマンドもいちいちすべてのファイルパスを打って実行しないですよね。
なのでPATHが設定されているファイルに格納する必要があります。
環境変数を使ってPATHを設定する方法もありますが、今回はすでにPATHが設定されているディレクトリに入れる方法です。
エクスプローラーを開いて「C:\Windows」のパスに移動してみてくださいそしてその中に先程作成したbatファイルを入れてコマンドプロンプトを開いて
「ls」と「pwd」を叩いてみてくださいこれで実行されれば完了です。

最後に

いかがでしたでしょうか?
今回は2つのコマンドを作ってみました既存のcmdコマンドを使用しているので特別難しい処理は使っていません。
もしほかによく使うコマンドがあればぜひ作ってみてください!
最後までご覧いただきありがとうございました。