1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

指定したフォルダが存在する場合にフォルダ名に日時を追加する

Last updated at Posted at 2017-12-05

ちょくちょく使うのに毎度うろ覚えで一々調べなおしてた。今日仕事で作ったので忘れないうちにメモメモ φ(。_。;)

if文

windowsコマンドのifは以下の書式



if 条件式 命令1 [else 命令2]

条件式が真の時は命令1、偽の時は命令2を実行する。else句は省略可。
命令文中にスペースが入る時は( )で囲む

指定したファイル・フォルダの有無を条件にしたい場合は下


@rem 指定したファイルが存在するかどうかを条件にしたい場合
if exist ファイル名 命令1 [else 命令2]

@rem フォルダの場合
if exist フォルダ名/ 命令1 [else 命令2]

move(フォルダ名の変更)

ファイルやフォルダを移動するコマンド。
書式は以下


move 移動元 移動先

@rem 同名ファイルがある場合に強制的に上書く
move /Y 移動元 移動先

@rem 同名ファイルがある場合に上書きするか確認する
move /-Y 移動元 移動先

移動元と移動先のフォルダを同じにして、別の名前を指定すれば名前変更ができる。

ファイル・フォルダ名に日時を入れる

システム日付と時刻はそれぞれ%date%、%time%という環境変数に入ってる。
確認


C:\>echo %date%
2017/12/05

C:\>echo %time%
23:20:48.79

だが、このままだと/や:のようなファイル名に使えない特殊文字が入っている。
そこで、変数から特定の文字列だけを抜き出すために以下の方法で抽出します


%変数:~開始位置,文字数% 

ここで、開始位置はセパレタといって、文字と文字の隙間に振られている番号
例えば"takagari"という文字列があったとして
image.png
こんな風になってる。

なので、5文字目の"g"が欲しい場合、4番目のセパレタを指定しないといけない。
(とか小難しく考えるより、普通に「先頭から数えて捨てる文字数」って考えた方が早いか)

上のYYYY/MM/DD形式の%date%とhh:mi:ss.ss形式の%time%から"MMDD-hhmi"を作るには下のようにする。


c:\>echo %date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%
1205-2344

まとめ

ここまでやった事を合体させて
hogeフォルダが存在する場合にフォルダ名をhoge_MMDD-hhmiに変更するコマンドはこうなる


if exist hoge/ (move /-Y \hoge \hoge_%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%)

参考にしたサイト

この辺
https://www.k-tanaka.net/cmd/move.php
http://www.atmarkit.co.jp/ait/articles/0405/01/news002.html
https://qiita.com/sawa_tsuka/items/8edf3d3d33a0ae86cb5c

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?