Pythonを勉強してからというもの、過去のプログラムを考え直すことが多くなりました。
今日も詰将棋動画を作りながら、自動化しているコードをちらっと見ています。
そうすると、思いつくものですね。
画像を圧縮したあと、そのファイルを移動させているのですが、現在手動でやっています。
これを自動化できないか?
画像圧縮はバッチファイルでやっているので、それに追記する形が理想です。
調べてみると、1文で書けるとのこと。その方法をまとめます。
バッチファイルでファイルを移動するには?
moveコマンドを使います。
基本構文は次の通り。
move [オプション] 移動元のファイルパス 移動先のファイルパス
移動したいファイルと移動先を指定し、必要に応じてオプションを付ければ良いです。
オプションは何があるの?
移動先に同じ名前のファイルがある場合、確認するか?しないか?が選べます。
デフォルトは「確認する」で、しない場合は「/Y」と、記述します。
具体例は?
単純にファイルを移動する
Dドライブ直下に保存してある「a.txt」を、Dドライブの「test」フォルダに移動するコードです。
move D:\a.txt D:\test\a.txt
ここではフルパスで記述していますが、「ディレクトリ」の知識があるなら相対パスでも可能です。
ファイル名を変更しながら移動する
Dドライブ直下に保存してある「a.txt」をファイル名「b.txt」に変更しつつ、Dドライブの「test」フォルダに移動するコードです。
move D:\a.txt D:\test\b.txt
移動先に同じ名前のファイルがあっても、確認なしで上書きしたい場合
上書きの確認が必要なければ、オプションに「/Y」を追加します。
move /Y D:\a.txt D:\test\a.txt
拡張子が一致するファイルすべてを移動する
ワイルドカードが使えるので、例えば「*.txt」を指定すると、テキストファイルすべてを移動させることができます。
ちなみに、「*(アスタリスク)」だけだと、フォルダ内にあるすべてのファイルが対象になります。
move D:\*.txt D:\test
注意:名前に日本語が使われているファイルを移動させたいとき
バッチファイルの文字コードを「Shift_JIS」で保存します。
「UTF-8」で保存している場合、コードが走りません。
まとめ
バッチファイルでファイルを移動するには、moveコマンドを使います。
移動の際にリネームもできてしまうのは知りませんでした。
詰将棋動画以外で「名前を変えてファイル移動する作業」があるので、それも自動化できると思うと嬉しいです。