2017-03-13 23 views
0

おはよう、バッチファイルを使用して日付を変更したファイルの名前を変更

バッチファイルの作成には新しい可能性があります。私の目標は、ソースからターゲットフォルダにファイルをコピーし、それらがターゲットフォルダに入ると、変更された日付でファイルの名前を変更することです。私は修正された日付を得ることに挑戦をやめている。変更日ではなく、CURRENT DATEでファイルの表示または名前の変更を行っています。

@echo off 
setLocal EnableDelayedExpansion 
::set tDate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2% 
set tDate=%date:~7,2%-%date:~4,2%-%date:~10,4% 
set source="C:\Source Folder" 
set target=%userprofile%\Desktop\backup 
for %%i in (%source%\AL*.*) do (
::set myfiledate=%%~ta 
copy "%%i" "%target%\%tDate%_%%~nxi" 
) 

私は本当にこの問題についてご入力をお願い

おかげ

+0

現在の日付から 'tdate'を設定し、ディレクトリをスキャンして' tdate'を使ってファイルをコピーするので、ターゲットファイルの名前の一部に現在の日付が含まれているという驚きはありません。コードブロック内に ':: comment'を付けるのは慣れていません。これは壊れたラベルであり、予期しない結果につながる可能性があります。 – Magoo

+0

ありがとうございました。私はそのコメントについて取るつもりです。どのように私は修正された日付をexctractし、ファイル名に追加することができます。 – Djspooch

+0

'for'の助けを借りてください(commadプロンプトウィンドウに '?/? 'をタイプします)、特に'〜 '修飾子の部分です。最終更新日を取得する方法があることがわかります。これは '%DATE%'や '%TIME%'変数のように、ロケール依存の方法で日付を返します。 – aschipfl

答えて

0
... 
for %%i in (%source%\AL*.*) do (
set myfiledate=%%~ti 
ECHO(copy "%%i" "%target%\!myfiledate:~0,2!!myfiledate:~5,2!!myfiledate:~6,4!_%%~nxi" 
) 

私はあなたが形式で新しいファイルに日付をしたいと仮定しています:ここではあなたの参照のための私のコードですaabbyyyyですが、並べ替えを簡単にするためにYYYYMMDDを使用することをお勧めします。

私はまた、あなたが(上記のように)それが正しいだことを確認するには、copyコマンドをINGのechoことから始めることをお勧めしたい - ただ、実際にコピーを行うにはecho(を削除します。

連結された3つの日付要素!myfiledate:~x,y!の順序は、設定および要件に応じて変更する必要があります。彼らは年、月、日を抽出する必要があります。

+0

お返事ありがとうございます。私はコードを試してコピーしたが、ファイル名に変更日が表示されなかった。これからのファイル名: 13-03-2017_AL&PP(3)to _AL&PP(3) – Djspooch

+0

私は単純にあなたのコードをコピーし、 '::'コメントを削除しました。メタ変数 '%% i'が使用されており、これは代入で使用されたメタ変数と一致しなければなりません。 – Magoo

+0

私は単純にあなたのコードをコピーし、 '::'コメントを削除しました。メタ変数 '%% i'が使用されており、これは代入で使用されたメタ変数と一致しなければなりません。 – Magoo

関連する問題