日々仕事していて、メモ帳を開いて適当なことを書いて保存するときに、
僕は今日の日付をタイトルにしてしまいます。
例えば、今日が2024年1月20日であれば、
「20240120.txt」というファイル名で保存しています。
さらに、毎日保存していたらファイルが増えてしまって、管理するのが面倒なので、
月ごとにフォルダを分けています。
「202401」フォルダを作って、その中に「20240120.txt」を保存しています。
ただでさえ、内容をメモするのでさえ大変なのに、それ以外にメモ帳を開いて、日付を確認してファイル名を保存する。
ここでは、これを毎日やるのは非常にめんどいので、内容をメモすること以外は、Windows標準のPowerShellを使って自動化しようぜ!っていう記事になります。
流れを確認
これを流れにすると、
1.メモ帳を開く。
2.内容をメモ帳に入力。
3.「202401」フォルダがなければ作成。
4.「名前を付けて保存」で、「202401」フォルダに「20240120.txt」と入力して保存。
という流れになります。
今回、自動化するのは、2以外の部分です。
そして、以下の順番で自動化していきます。
1.「202401」フォルダがなければ作成。
2.「202401」フォルダに「20240120.txt」と入力して保存。
3.メモ帳を開く。
以上のことを、PowerShellで自動化しましょう!
プログラム見本(PowerShell)
スタートメニューから、PowerShell ISEを開いてみてください。
下のコードをコピペしましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$Y = (Get-Date).Year $M = Get-Date -UFormat "%m" $D = Get-Date -UFormat "%d" $YM = [string]$Y + [string]$M $YMD = [string]$Y + [string]$M + [string]$D $FolderPath = "フォルダを作成先のパスをここに入力してください。(最後に\を忘れずに!)" + $YM $Result1 = (Test-Path $FolderPath) if(-not $Result1) { New-Item $FolderPath -ItemType Directory } $TextPath = $FolderPath + "\" + $YMD + ".txt" $Result2 = (Test-Path $TextPath) if(-not $Result2) { New-Item $TextPath -ItemType File } Start-Process $TextPath |
プログラム解説①
1 2 3 |
$Y = (Get-Date).Year $M = Get-Date -UFormat "%m" $D = Get-Date -UFormat "%d" |
まず、ファイル名・フォルダ名に使用される年・月・日を、Get-Date関数で取得します。
年(Year)・月(Month)・日(Day)の英単語の頭文字を変数にしました。
月・日は1~9の数字になる場合、2桁になるように頭に0をつけましょう。%をつけます。
$M = Get-Date -UFormat “%m”
とすると、1月の場合、01となるように整えてくれます。
これによって、ファイル名・フォルダ名の長さが同じになり、管理しやすくなります。
1 2 |
$YM = [string]$Y + [string]$M $YMD = [string]$Y + [string]$M + [string]$D |
フォルダ名を「年月」、ファイル名を「年月日」にします。
Get-Date関数で取得した値の変数の型は、DateTime型で扱いにくいです。
文字列型のstring型に型変換しましょう。
1 |
$FolderPath = "フォルダを作成先のパスをここに入力してください。(最後に\を忘れずに!)" + $YM |
$FolderPath変数に、「202401」フォルダを作成するパスを入力しましょう。
例えば、デスクトップ上の「PowerShell」フォルダの中に「202401」フォルダを作る場合、
1 |
$FolderPath = "C:\Users\yuron\Desktop\PowerShell\" + $YM |
という感じです。
最後に、「\」をつけるのを忘れないでください。
プログラム解説②
1 2 3 4 5 |
$Result1 = (Test-Path $FolderPath) if(-not $Result1) { New-Item $FolderPath -ItemType Directory } |
ここでは、「202401」フォルダが既に作成されている場合は何もせず、「202401」フォルダが作成されていない場合、$FolderPath変数に設定したパスにフォルダを作成する処理を記載しています。
そして、Test-Pathはファイルやフォルダの存在をチェックするのに使います。
1 2 3 4 5 6 |
$TextPath = $FolderPath + "\" + $YMD + ".txt" $Result2 = (Test-Path $TextPath) if(-not $Result2) { New-Item $TextPath -ItemType File } |
「202401」フォルダに今日の日付が名前になったテキストファイルを変数に入れます。
Test-Pathでファイルの有無をチェックします。
1 |
Start-Process $TextPath |
そして、今日の日付のファイル名でメモ帳が起動します。