忍者ブログ

サラリーマンの仕事術

給料がちょっとだけあがるような仕事術について

新規テキストファイルをバッチで作成する


Windows で新しいファイルを作成する方法って、

 マウスでエクスプローラのなにもないところを右クリックして
 新規作成を選んで
 ファイルのタイプを選択する

以外に方法がないみたいです。

おそらく Word / Excel なんかのアプリに新規作成を実行させるためにそうなっているんでしょうけど、ちょっとしたメモを作りたいだけのような場合には結構不便です。

たとえば、多くのファイルがあるようなフォルダだと、まず何もないところの面積が少ない。

そのために、表示を広げたり、最後まで無用にスクロールさせたり、表示方法を変更したりしないといけません。

■使いたい場面


私の場合、過去記事にも書きましたが、議事録やメモをテキストファイルで取っています。
あと、そのフォルダにちょっとした覚えなどを書いておくと、あとでフォルダを見たときに、「このフォルダで何かやったな」ってわかるようにしています。

たとえば、そこにあるファイルのパスワードを書いておいたり…(」パスワードとして役に立ってないじゃん」っていうツッコミは置いといて…)。

なので、とりあえずテキストファイルがさっと作成できるようにしておきたいわけです。

ファイラー(私の場合は NexusFile)を使っているときは、ファイラーの機能で簡単に作成が可能ですが、エクスプローラは首記のように面倒くさいんですよ。


■「送る」メニューで新規ファイルを作る


「なければつくればいいじゃない」がポリシー(というようなものか?)なので、ちょっと作ってみました。

バッチファイルになってます。

☆――――――――――――――――――――――――――
rem SendTo で新規テキストファイルを作成する
rem
set p=%~d1%~p1
pushd "%p%"
set time2=%time: =0%
@echo\>NewFile%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%.txt
――――――――――――――――――――――――――☆


これを、SendToフォルダに、"NewFile.bat" という名前で保存してください。
※SendToフォルダの場所がわからないときには、
※WIN+R で「ファイル名を指定して実行」ダイアログを開き、そこに shell:sendto と入力してリターンキーで SendTo フォルダが開きます

使い方は簡単で、エクスプローラで適当なフォルダを開いて、1度だけ下キー(カーソルキー)を押してください。たぶん、そのフォルダのファイルかフォルダのひとつがハイライトされていますよね。

その状態で、アプリケーションキー(キーボードの"カタカナひらがな"キーの右にあるキー)を押して、N, N と押すとそのフォルダに

 NewFile日付時刻.txt

っていうテキストファイルが作成されます。

■キーボードでエクスプローラを使うときに


マウスでやるのなら、

 適当なところを右クリックして
 「送る」を選ぶ
 「NewFile.bat」を選ぶ

なのですが、マウスでやるなら、普通に新規作成を選んだほうが素直ですので、キーボードでやるという前提です

 下キー
 アプリケーションキー
 Nキー(「送る」メニューが開きます)
 Nキー("NewFile.bat"が実行されます)

もしかして、メニュー中にキーの名前が重複している場合には、余計に N キーを押さないといけないかも。環境次第なので、ここらは実際にやってみてください。

いろいろ工夫してみたのですが、キー操作はこれ以上簡単になりませんでした。

■簡単なソース解説


●set p=%~d1%~p1
SendTo のパラメータで、そのフォルダのファイル名かフォルダ名が与えられるので、現在のフォルダ部分だけを抽出しています。

●pushd "%p%"
cd %p% でもいいのですが、ドライブが違うと cd が効かないので、pushd を使ってます。
また、パス名に空白があるといけないので、"" でくくってます。

pushd しておきながら、popd をしないのは、どうせバッチファイル内のスタックなので、バッチファイルが終われば破棄されます。だからどうでもいいや...ということで、ご愛嬌。

●%date:~0,4%%date:~5,2%%date:~8,2%
環境変数 %date% は現在の日付を取得できます。
ただし、"2017/12/01" みたいに、ファイル名として使用できない "/" を含んでいるので、それ以外の部分を部分文字列(文字列の一部)として抽出しています。
年は1文字目から4文字、月は6文字目から2文字、日は9文字目から2文字を取り出して、それを連結します。

●%time2:~0,2%%time2:~3,2%%time2:~6,2%
%date% と同じく時刻を抽出しています。ただし、%date% のように %time% から取り出そうとすると、時間が一桁のときに最初がスペースになってしまうので、その前に、

set time2=%time: =0%

で、スペースをゼロに置き換えてます。

●@echo\>NewFile(中略).txt
で、最後に、

 echo > filename

のコマンドを使って、@eho\ で改行だけのデータをファイルにリダイレクトしてファイルを作成させています。

このやり方だと、同じファイル名があると上書きしてしまうので、同じファイル名が作られないように日付だけでなく秒まで含めた時間もファイル名入れるようにしています。

あとは、このファイルをリネームするなり放置するなりは、よしなに。


■同じテーマの記事

フォルダの同期・バックアップ方法3:zcopyを使う

最近の Windows ではあまりなくなりましたが、以前の Windows では、突然ファイルが破損して、何日もかけて作ってきたファイルが一瞬にしてパア、なんてことがよくありました。また、Windows のせいだけではなく、誤操作や誤判断でファイルを消してしまう、なんてことも時々あります。人間だからミスはするさ…、フッ………などと言ってみても、内心は呆然。という時のために、バックアップを作るようにしてます。ただ、手動でバックアップをすると、手間でもあるし、つい忘れて..

行頭記号を一気に挿入する

メールに引用記号を付けながら、返信することがありますよね。たとえば、あれこれこれそれそれあれみたいな文章を引用すると、> あれこれ> これそれ> それあれってやるやつです。これって普段どうやって挿入してますか?まあ、1行や2行なら、引用元からコピペして、あとで、 ">" を手で追加しても、まあ大したことはありませんが、20行もやると嫌になります。プログラムを書いているときにも、複数行をまとめてコメントアウトしたり。エディタならたいて..

コマンドプロンプトでCTRL+Vを使用する

Windows10 からはなにもしなくてもできるようになりましたが、クリップボードに入れたテキストをコマンドプロンプトに貼り付けたいことがよくあります。たとえば、パスが通っていない実行ファイルを実行するにも、Windows の U/I からは簡単ですが、コマンドプロンプトでやろうとすると、そのパスも含めて完全なファイル名がわからないと出来ません。ところがたいてい Windows のアプリは階層が深いか、名前がが長くて覚えにくいところに実行ファイルがあります..

Windowsゴミ箱の古いファイルを消しておく

Windowsではファイルを削除するとファイルは「ゴミ箱」に移動します。この状態の時、実際にファイルは削除されるわけではなく、「ゴミ箱」というフォルダに移動するだけです。…というのは誰でもご存知の話。で、しばらく放置していると、ゴミ箱にファイルが溜まりすぎて、「ディスクが満杯」ってWindows君から怒られたり、動作が遅くなったりと、気持ちの良い結果にはなりません。ゴミ箱は定期的にクリアする私の場合、毎週の週次レビューのときにゴミ箱の掃除をしてました。と..

フォルダの同期・バックアップ方法4:FireFileCopyを使って履歴バックアップする

最近の Windows ではあまりなくなりましたが、以前の Windows では、突然ファイルが破損して、何日もかけて作ってきたファイルが一瞬にしてパア、なんてことがよくありました。また、Windows のせいだけではなく、誤操作や誤判断でファイルを消してしまう、なんてことも時々あります。人間だからミスはするさ…、フッ………などと言ってみても、内心は呆然。という時のために、バックアップを作るようにしてます。ただ、手動でバックアップをすると、手間でもあるし、つい忘れて..

スタートメニューで起動するアプリを自動化する

個人的な好みから言えば、インストーラがなくて、ただフォルダにコピーするだけのアプリが好みなのです。しかし、最近の殆どのアプリはインストーラがついていて、環境を勝手に判断してインストールがされるようです。自分で作った AutoHotKey や UWSC などの自動化ツールのスクリプトでそのアプリを起動させようとすると、そのアプリの実行ファイルのありかを調べて、パスを書かないとちゃんと起動させられません。ところが、ときどき環境やバージョンによってインストール先が変わったり..

PR