ワイのWindowsにも touch コマンドがやってきたで!ヤァ!ヤァ!ヤァ!

hands-437968_1280

Linux系を使っている人ならご存知かと思いますが、touch というコマンドがあります。
使う人にはとっても便利(いや、そこそこぐらいかな・・・)、使わない人には意味不明なコマンドです。

Windowsには touch コマンドがありません。
Windowsにも touch コマンドが欲しいという方には、ちょっとだけ役に立つ内容かも知れません。



最初に言っちゃいますが、今回の記事は別段珍しくも無い内容です。
検索すれば幾らでも出てきますし、この記事でプラスアルファみたな事も書いていません(笑)
完全に個人的なメモとして書いたものになりますが、 touch コマンドを知らない方ももし良ければご覧ください。

あと、PATHとか touch の説明は殆ど書いていません。
この記事を読む人は、その辺はご存知だろうと思いますので・・・

まずは結論

Windowsで touch コマンドを使う手順を書いておきます。

ただし、今回の touch コマンドは簡易版です。
Linuxにおける touch コマンドは幾つかオプションがありますが、そこまで対応していません。
できない事はないですが、私が使う機能さえあればいいので。

と言うか、Microsoftのサイトに書かれてあったものにほんのちょびっとだけ変更して使ってるだけです。

1.これを保存しろ!

ファイル名は touch.bat

@echo off

REM *********************************************************
REM touchコマンド(簡易版)
REM   引数:%1 - ファイルパス
REM *********************************************************
REM =========================================================
REM 情報元
REM Microsoft - 日付とファイルのタイムスタンプを更新
REM https://support.microsoft.com/ja-jp/kb/69581
REM =========================================================

REM ---------------------------------------------------------
REM 引数チェック
REM 引数が無い場合は何もせず終了
REM ---------------------------------------------------------
if %1. ==. goto end

REM ---------------------------------------------------------
REM 処理開始
REM ---------------------------------------------------------
if not exist %1 (
	REM 無いなら作る
	type nul > %1
) else (
	REM 有るなら日付更新
	copy /b %1 +,, > nul
)

REM 不要なので削除
REM echo %1 touched!

REM ---------------------------------------------------------
REM 終了
REM ---------------------------------------------------------
:end

2.touch.bat をPATHの通ったところへ置け!

どこでもいいです。
PATHが通っているところへ置いてください。

自作コマンドですので、僕はDropbox等のクラウドに置いてます。
そのクラウドの中のフォルダにPATHを通しています。

3.使え!

コマンドプロンプトで、

touch C:\hoge\fuga\boo.txt

のように打てばOKです。

touch コマンドってなに?

カンタンに言えば、

  • (指定したファイルが無いなら)作る
  • (指定したファイルが有るなら)ファイルのタイムスタンプを更新する

というものです。

touch コマンドってどんな時に使うの?

ここに書いている以外にも使い方はあるでしょうが、私はこう使っていますよというご紹介です。

確実にmake対象とする時

Linuxで開発する時に touch コマンドをよく使っていました。
どういう時に使っていたかと言うと、

  1. hoge.hファイルだけを変更
  2. hoge.cファイルは変更なし
    ※hoge.cはhoge.hをincludeしている
  3. make実行
  4. make対象(hoge.c)が更新されていないのでmakeされない
    ※hoge.cのタイムスタンプが前回makeより新しくなっていればmake対象となるはず

と、こういう事がよく発生していたため、確実にmakeするために事前に対象ファイル(hoge.c)に touch していました。

ソースコードが何十本・何百本とあったため、make all は10分とか20分とか時間がかるためやりたくない。
必要なファイルだけmakeするために touch コマンドを使っていました。

私はmakfileの事はあまり分からないのですが、makefileがちゃんと対応していれば.hファイルだけ更新しても必要な.cファイルをmakeしてくれるはずです。

テスト用のダミーファイルを作りたい時

例えばですが、ファイルを削除や移動するようなプログラムやbatやshellをテストする時、ダミーファイルを作らないといけませんね。しかも大量に。
中身はどうでもよくて、なんせファイルさえあればOKな時、この touch コマンドでファイルを作るのです。

touch  hoge001.txt
touch  hoge002.txt
touch  hoge003.txt
touch  hoge004.txt
 ・
 ・
 ・
 ・

というbatやshを作っておけば何度でもファイルを作ることができます。

touch コマンドって便利なの?

どうなんでしょ?
私は結構好きなコマンドですね。
Linuxを使った開発ではちょくちょく使っていますが、Windowsには touch コマンドは無いので使いたいなとずっと思っていました。

で、よくよく考えるとbatで作ればいいじゃんと思って、今回調べたわけです。

最近の仕事でダミーファイルを大量に作ったり、タイムスタンプを更新する必要があったので、バンバン使いまくりました。

まとめ

Windowsでも touch コマンドを使いたいなと思う事はたまにありました。

なのにbatで作ればいいというのが、なぜかずっと思いつかなくて、つい最近になって気付きました(笑)

GUI全盛の時代ですが、touch hoge001.txt のようなコマンドを大量に書いてコマンドプロンプトやターミナルに貼り付けるだけで処理してくれるんですから、コマンドはとても便利です。

全部のコマンドを覚えるなんてもちろん無理ですので、WindowsでもLinuxでもMacでもこういう機能の単純なコマンドから使うと、コマンドのラクさ・楽しさが分かると思います。

コマンド使ってラクしましょう!!!

参考図書

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。