みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ファイル名を変更して移動させるコマンド

Windowsのバッチファイルで、ファイル名を変更してそのファイルを指定のフォルダに入れると言うものを作りたいです。
現在の手順は以下通りです。

1. Usbメモリ(gドライブ)に入っているA.datというファイルを名前変更でA_日付.datに変更。
2. そのファイルをデスクトップのbackupフォルダにコピー
3. Usbメモリのファイルを削除

これをusbを指してバッチファイルをクリックして完了させるようにしたいです。
どなたかお願いします。

投稿日時 - 2014-05-02 18:43:23

QNo.8578421

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

「1. Usbメモリ(gドライブ)に入っているA.datというファイルを名前変更でA_日付.datに変更。」
 この"A_日付.dat"の日付は漢字ではなく、当日の日付だとすると、次のようにすれば
実現できます。

SET YYYYMMDD=%DATE:/=%
REN G:\A.DAT A_%YYYYMMDD%.DAT
COPY G:\A_%YYYYMMDD%.DAT C:\Users\(ユーザ名)\Desktop\
rem DEL G:\A_%YYYYMMDD%.DAT
EXIT

「3. Usbメモリのファイルを削除」
 上の処理で4行目に相当しますが、「rem」で無効にしています。理由は、以下の2点からです。

1.何らかのミスがあった時にUSBメモリーの元データが消える
2.1日1回しか実行しないと仮定すると、ファイル名を変えているので、
 翌日A.DATをUSBメモリーに書き込んでも上書きにならない

 その代わり、定期的に容量を監視して不要
ファイルを消すか、過去データを自動的に消す仕掛けを考える必要があります。

4行目を次のようにすれば、最新の3世代だけUSBメモリーに残ります。

FOR /f "skip=3" %%F in ('dir /b /o-d G:\A_*.DAT') DO DEL G:\%%F

投稿日時 - 2014-05-02 22:48:38

補足

ありがとうございます。
同じファイル名があった場合にA_日付_2.datとなるようにするにはどうすればいいでしょうか?

投稿日時 - 2014-05-07 10:49:26

ANo.2

ファイルの移動と言うことだと思うので、move コマンドで出来ます。

move "もとのファイル名をフルパスで" "デスクトップのフォルダーのフルパス\A_日付.dat"

投稿日時 - 2014-05-02 21:38:33

ANo.1

ファイル名を変更するコマンドを使う
コピーコマンドを使う
削除コマンドを使う

で良いんじゃない?
ファイル名も日付も決まっているなら深く考える必要はない。
(ファイルの日付に関する条件がないからなあ
 あってもファイルや作業している日時を取得するコマンドと組み合わせればよいだけのこと)

ってか、これらのバッチ処理で何が分からないのかを示さないと
全部他人任せで後々同じような問題に直面したら、同じように他人に頼らなくてはならなくなります。
それって本当に問題を解決したことになるのかなって思うんですよ。
そんなわけで処理の手順を示してみたんですけど、どうでしょう。

投稿日時 - 2014-05-02 19:47:25

あなたにオススメの質問