2017-03-15 5 views
0

Windowsのバッチファイルを使用して、ディレクトリ内の最新のファイルを別のディレクトリにコピーする方法が見つかりました。しかし、コピーしたファイルの名前を変更して古いファイルを上書きする方法を理解するのに助けてください。あるディレクトリから別のディレクトリに最新のファイルをバッチコピーし、名前を変更して上書きします。

@echo off 
set source="D:\Backup" 
set target="D:\tmp" 

FOR /F "delims=" %%I IN ('DIR %source%\*.csv /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :END 
:END 

ソースバックアップフォルダには、日付と時刻が追加された増分バックアップが含まれています。私は結果が一定の名前、例えばraw.csvと言いたいので、Excelでそれを操作することができます。

ありがとうございました!

+2

正確なターゲット名が必要な場合は、それを使用しないでください。 –

+0

が大好きです。適切な構文を教えてください。 – zkvvoob

+1

'COPY"%source%\ %% I ""%target%\ raw.csv "'? –

答えて

2
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    set "source=D:\Backup" 
    set "target=D:\tmp" 

    FOR /F "delims=" %%I IN (' 
     DIR "%source%\*.csv" /A-D /O-D /B 
    ') DO COPY "%source%\%%I" "%target%\raw.csv" & echo %%I & GOTO :END 

:END 

コメントとして、コピー操作にターゲット名を含めるだけです。

また、変数の定義も変更しました。良い理由がある場合を除き、パスを使って作業する場合は、ではなくで、変数値に引用符を含めてください(後で扱うのは難しい)。代入を引用するだけで(特殊文字や最終スペースでの問題を防ぐため)、後で、必要に応じてファイルシステム参照を引用します。

set "source=d:\backup" 
    ^................^ 

set "target=D:\tmp" 
    ^.............^ 

dir "%source%\*.csv" 
    ^..............^ 

COPY "%source%\%%I" "%target%\raw.csv" 
    ^............^ ^................^ 
+0

あなたの提案を試しましたが、いくつかの問題がありました。ソースディレクトリは実際には少し長く、名前にはスペースがあります。 CMDでバッチファイルを実行しようとしましたが、ファイルを見つけることができないというエラーメッセージが返されました。この '' source = "D:\ Google Drive \ Backup" "'のようなパスに引用符を追加しましたが、今度はファイルを見つけることができませんが、今回は実際の名前を表示しています。ソースフォルダー内のcsvファイル。 – zkvvoob

+0

@zkvvoob、引用符をチェックしてください。 –

+0

あなたが提案したものの、同じエラーが表示され、ファイルが見つからないことを示しました。 – zkvvoob

関連する問題