こんにちは、生焼けです。
今回は、AutoHotkeyで出来るファイルの操作について解説します。
この記事では、【ファイル=「.txt」「 .ai 」などの拡張子がついたような個々のもの】、【フォルダー=それらを入れるもの】、としています。
また、キーの指定や、「return」は基本省略しています。
AutoHotkeyについてはこちらの記事で解説しています。
フォルダの操作
フォルダを表示するRunコマンド
フォルダを表示するには、Runコマンドを使用します。
下のように「Run,」の後ろに表示させたいフォルダのパスを記入すればエクスプローラーで表示されます。
Run,D:\folderA\mitaifolder
この場合、folderAのmitaifolderが表示されます。
フォルダを作成するFileCreateDirコマンド
フォルダを作成するにはFileCreateDirコマンドを使用します。
「FileCreateDir,」の後ろに「フォルダを作成したい場所\フォルダ名」と書きます。
FileCreateDir,D:\folderA\newfolder
この場合、folderAにnewfolderが作成されます。
FileCreateDirコマンドではファイルの作成はできないのでご注意を。
フォルダをコピーするFileCopyDirコマンド
フォルダをコピーするにはFileCopyDirコマンドを使用します。
「FileCopyDir,」の後ろに「コピーしたいフォルダの場所\フォルダ名」,「コピー先のフォルダの場所\新しいフォルダ名」と書きます。
FileCopyDir,D:\folderA\motofolder, D:\folderB\newfolder
上の場合、folderAにある”motofolder“が、folderBの中の”newfolder”としてコピーされます。
つまり、フォルダが複製され、場所と名前を変えた状態になります。
上書き設定
デフォルトではコピー先に同じ名前のフォルダがあった場合はコピーされないようになっています。
上書きするようにしたい場合は、
FileCopyDir,D:\folderA\motofolder, D:\folderB\newfolder,1
と最後に「,1」をつけてください。
フォルダを移動・リネームするFileMoveDirコマンド
フォルダの移動やリネームにはFileMoveDirコマンドを使用します。
「FileMoveDir,」のあとに「移動したいフォルダの場所\フォルダ名」,「移動先のフォルダの場所\新しいフォルダ名」と書きます。
FileMoveDir, D:\folderA\motofolder, D:\folderA\newfolder
上の場合、folderAにあるmotofolderがnewfolderへと名前が変わります。
上書き設定
デフォルトでは移動先に同じ名前のフォルダがあった場合は移動されないようになっています。
同じ名前があっても関係なく移動させたい場合は
FileMoveDir,D:\folderA\motofolder, D:\folderA\newfolder,2
と最後に「,2」をつけてください。
フォルダを削除するFileRemoveDirコマンド
フォルダを削除するにはFileRemoveDirコマンドを使用しますが、デフォルトのままだとフォルダの中にファイルなどが入っていると削除されない設定になっています。
フォルダの中身があっても消したい場合は最後に「,1」をつけます。
大抵はフォルダの中に何かしらのファイルが入っていると思うので基本付けて使います。
FileRemoveDir,D:\folderA\kesitaifolder,1
「,1」を省略した場合は、フォルダが空の時のみ削除が可能になります。
ファイルの操作
ファイルをコピーするFileCopyコマンド
ファイルをコピーするにはFileCopyコマンドを使用します。
「FileCopy,」の後ろに「コピーしたいファイルの場所\ファイル名」,「コピー先のファイルの場所\新しいファイル名」と書きます。
FileCopy,D:\folderA\moto.txt, D:\folderA\new.txt
上の場合、folderAにあるmoto.txtがnew.txtとしてコピーされます。
つまり、moto.txtを複製して名前を変えた状態になります。
上書き設定
デフォルトではコピー先に同じ名前のファイルがあった場合はコピーがされないようになっています。
上書きするようにしたい場合は、
FileCopy,D:\folderA\moto.txt, D:\folderA\new.txt,1
と最後に「,1」をつけてください。
ファイルを移動・リネームするFileMoveコマンド
ファイルを移動させるにはFileMoveコマンドを使用します。
「FileMove,」の後ろに「移動したいファイルの場所\ファイル名」,「移動先のファイルの場所\新しいファイル名」と書きます。
FileMove,D:\folderA\moto.txt, D:\folderB\new.txt
上の場合、folderAにあるmoto.txtがfolderBのnew.txtとして移動されます。
上書き設定
デフォルトでは移動先に同じ名前のファイルがあった場合は移動されないようになっています。
同じ名前のファイルがあっても移動させたい場合は、
FileMove,D:\folderA\moto.txt, D:\folderB\new.txt,1
と最後に「,1」をつけてください。
ファイルを削除するFileDeleteコマンド
ファイルを削除するにはFileDeleteコマンドを使用します。
「FileDelete,」の後ろに「消したいファイルの場所\ファイル名」と書きます。
FileDelete,D:\folderA\kesitai.txt
folderAにある、kesitai.txtが削除されます。
ファイル/フォルダの存在を確認する
AutoHotkeyでは、ファイルやフォルダが存在するかどうかを確認するコマンドもあります。
ファイル/フォルダが存在するかどうかで動作を分岐させるIfExist
IfExistコマンドを使えば、指定したファイルやフォルダがあった場合となかった場合で動作を分岐させることができます。
「IfExist,」のうしろにファルダやファイルのパスを書きます。
IfExist,D:\folderA\sonzaisitehosii.txt
MsgBox,ありました。
return
もちろん else も設定できます。
IfExist,D:\folderA\totoro
{
MsgBox,夢だけど夢じゃなかった!
}
else
{
MsgBox,トトロいたもん…
}
return
ワイルドカード
ファイル操作の中には、「ワイルドカード”*”」を使用できるものがあります。
「ワイルドカード」とは、なんの文字にでも置き換えられる記号…みたいなもののことです。
*.txt
で、ファイル名に関わらず「.txt」が拡張子のもの全てを表すことができます。
例えば、
IfExist,D:\folderA\*.txt
とすると、folderAに.txtが拡張子のもの、つまりテキストファイルがあるかどうかで分岐させることができます。
条件にあったファイル/フォルダを探して動作させるLoop
条件にあったファイル/フォルダを探して、その一つ一つに動作をさせたい場合はLoopコマンドを使用します。
前述したワイルドカード「*」を利用して、
Loop,D:\folderA\*.txt
{
MsgBox,テキストファイルがあったよ!
}
return
のように書きます。
上の場合、folderAにある全てのテキストファイルに対してそれぞれに一回ずつ動作を行います。
つまり、folderAにテキストファイルが5つあった場合、5回「テキストファイルがあったよ!」とメッセージが表示されます。うるさいですね。
また、ワイルドカードを使わずに個別のファイルを探すこともできます。
Loop,D:\folderA\diary.txt
{
MsgBox,君の日記を見つけたよ!
}
return
フォルダを探す場合
デフォルトでは、ファイルのみを探すようになっています。
ファイルとフォルダどちらも探す場合は「,1」、フォルダだけを探す場合は「,2」を最後につけます。
Loop,D:\folderA,2
{
MsgBox,folderAがあったよ!
}
return
変数
Loopコマンドでは条件にあったファイルのファイル名や拡張子などが変数として取得できます。
詳しくはこちらの記事で解説しています。
応用
ファイルを新規作成する
新規にファイルを作成するコマンドはないみたいです。
なので、コピー機能を使用して擬似的にファイルを新規作成しています。
やりかた
まず、あらかじめ作成したいファイルの拡張子の雛形ファイルを作っておきます。(テキストファイルでもaiファイルでもpsdファイルでもOK)
それをコピーして好きなフォルダに持ってくる
…とすれば新しいファイルを擬似的に作る事ができます。
例えば、今日の日付のファイルを作って、その中にテキストファイルを作りたい場合
;hinagata.txtをfolderAにあらかじめ作っておく。
;%A_MM%=今日の月、%A_DD%=今日の日にち
FileCreateDir,D:\%A_MM%%A_DD%
FileCopy,D:\folderA\hinagata.txt, D:\%A_MM%%A_DD%\new.txt
とすれば、今日が7月20日だった場合、「0720」のフォルダが作られ、その中に「new.txt」というファイルが作られます。
まとめてきな
今回はAutoHotkeyでよく使うファイル操作についてまとめました。
日常的にフォルダやファイルを作成する人にとっては、これめっちゃ時短になるんじゃないでしょうか。
あと、AutoHotkeyでは簡単なGUIの作成も出来るんですが、それと組み合わせると入力した文字列でフォルダとファイル名どっちもつくれたり、AパターンBパターン…みたいにひな形ファイルを選べたり出来るのでより便利になります。
GUIについても、いつかまとめたいと思いますが、今日はこのへんで
参考記事、もっと詳しい説明
AutoHotkeyのWiki