BETA

Windows に head コマンドを実装する

投稿日:2020-06-17
最終更新:2020-06-17

まえがき

Windows でテキストデータを処理している際、サクッとファイルの一部を確認したい時がある。
Linux 系の OS であれば head をしてしまうのだが、Windows だと少し面倒くさい。

Get-Content [パス] -totalcount 5  

ファイルの中身を見ようとする度に Get-Content なんて打っていられない……。
しかも、ファイルが UTF-8 だった場合 -ENCODING UTF8 まで打たねばならない。
少しと言ったがあれは嘘だ。凄く面倒くさいぞ。
じゃあ、head コマンド使えるようにするか。

環境

Windows 10 64bit

準備: nkf32.exe

簡単に説明しておくと、この準備する exe は昔からある文字コード変換ツールです。
CUI 実行が出来るため私は重宝しています。
今回は、文字コード変換ではなくファイルの文字コード推定に利用します。

ダウンロード

nkf Network Kanji Filter から、ファイルをダウンロードしてきてください。
vc2005\win32(98,Me,NT,2000,XP,Vista,7)Windows-31J 配下にある nkf32.exe を使用します。

nkf32.exe にパスを通す

既にパスの通ったフォルダがある方はそれを利用して OK です。
この辺、何が適切なのか知見が無いので私の実施した手順を記載しておきます。
より良いやり方をご存知な方はコメント等で教えて下さい!

  1. 下記のパスでフォルダを作成する。
    C:\Program Files (x86)\nkf
  2. 作成したパスに nkf32.exe を配置する。
  3. 拡張子を除いたファイル名がコマンドになるので、nkf.exe にリネームする。
  4. [システムとセキュリティ] -> [システム] -> [システムの詳細設定] -> [環境変数] に移動
  5. ユーザー環境変数の PATH を選択し、 [編集] をクリック。
  6. [新規] で、先程作成したフォルダのパスを入力する。

head の実装

head と同様の動作を行うバッチを作成します。

head.bat の作成

@echo off  

rem --- 引数 ---  
set FILE_PATH=%1  

rem --- 対象ファイルの文字コードを確認 ---  
for /F "usebackq" %%i IN (`nkf -g %FILE_PATH%`) DO set ENCODING=%%i  

rem --- ファイルの中身を出力---  
if %ENCODING%==UTF-8 (  
    powershell -command "& {Get-Content '%FILE_PATH%' -ENCODING UTF-8 -totalcount 5}"  
) else (  
    powershell -command "& {Get-Content '%FILE_PATH%' -ENCODING default -totalcount 5}"  
)  

@echo on  

head.bat にパスを通す

nkf32.exe の時と同様の手順を行います。

  1. 下記のパスでフォルダを作成する。
    C:\Program Files (x86)\MyCommand
  2. 作成したパスに head.bat を配置する。
  3. [システムとセキュリティ] -> [システム] -> [システムの詳細設定] -> [環境変数] に移動
  4. ユーザー環境変数の PATH を選択し、 [編集] をクリック。
  5. [新規] で、先程作成したフォルダのパスを入力する。

再起動

環境変数にセットしたパスは再起動後有効になるので、再起動します。

動作させてみる

$ head head.bat  
$   
$ @echo off  
$   
$ rem --- 引数 ---  
$ set FILE_PATH=%1  

動いた!

あとがき

これで今後の業務が少し楽になります。
設定は少し大変ですが、setx とかいうコマンドで環境変数をセットしないようにしましょう。(1 敗)
少し大変ですが、手でやりましょうね。(何か安全な自動化の手順があったら教えて下さい)

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

気になった技術や、開発を楽にするテクニックなどについて書きます。 基本的に備忘録として記事を投稿します。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう