4

1時間に1回など、定期的にファイルをコピーする必要があるため、コピーする必要があるファイルを別のフォルダーにコピーする必要があるというxcopyバッチを設定しようとしました。コピーすると、ファイルが上書きされますが、これは想定されていることではありません。

ファイルがコピーされると、代わりに新しいファイルが作成され、File.txt、File-COPY1.txt、File-COPY2.txt などの名前が付けられます。

それを行う方法はありますか?

前もって感謝します。

4

4 に答える 4

2

ファイル名にタイムスタンプを追加するだけで、実行ごとに個別のファイルを作成できます。このようなもの:

XCOPY "File.txt" "[TargetDir]\File1_%time:~0,2%_%time:~3,2%_%time:~6,2%.txt"

File1_11_30_05.txtこれは、コピー操作が 11:30:05 に行われたと仮定して、次のファイル名に解決されます。この%time:~0,2%部分は、変数に格納されている時間文字列から 2 桁を抽出します%time%

さらに、同じ方法で日付を追加することもできます。%date% この目的で変数を使用できます。

File-COPY1.txtなどのパターンが本当に必要な場合はFile-COPY2.txt、もう少し作業が必要です。タイムスタンプのアプローチが十分でない場合はお知らせください。

于 2012-09-21T09:36:59.713 に答える
1

このバッチは、2 つのディレクトリの名前 (相対または明示) を取得し、最初のディレクトリ内のすべてのファイルを 2 番目のディレクトリにコピーしますが、ファイル名と拡張子の間に -# を追加します (# は、ディレクトリ内のファイルのコピーの数です)。 2 番目のディレクトリ)。MISC.txtしたがって、dir1 から dir2 にコピーされたファイル ( ) が 1 つしかない場合、それが 4 回コピーされている場合、dir2 には 4 つのファイル (MISC-1.txt MISC-2.txt MISC-3.txtおよびMISC-4.txt)が含まれます。

使用するzcopy.batには、このように呼び出しますzcopy fromDir toDir

zcopy.bat

@echo off
if "%1"=="" goto :eof
if "%1"=="/?" type %~dpnx0 & goto :eof
if "%2"=="" goto :eof
if not exist %2 md %2
setlocal enableDelayedExpansion
for %%x in (%1\*.*) do (
  set this=
  set count=1
  if "%%~xx"=="" (
    set backstop=.
  ) else (
    set backstop=
  )
  for /f %%y in ('dir /b /a:-d /o:n "%2\%%~nx-*%%~xx!backstop!" 2^>nul') do ( 
    set this=%%~nxy
  )
  if not "!this!"=="" (
    set count=!this:%%~nx-=!
    if "%%~xx"=="" (
      set /a count=!count!+1
    ) else (
      set /a count=!count:%%~xx=! + 1
    )
  )
  set target=%%~nx-!count!%%~xx
  echo copy "%%x" "%2\!target!"
  copy "%%x" "%2\!target!" > nul 2>&1
)

ディレクトリ%2が存在しない場合は、上記のコードによって作成されます。

于 2012-09-22T11:26:15.627 に答える
1

これを使用して、毎日ファイルのバックアップを作成します。

    set aa=%date:~4,2%%date:~7,2%%date:~12,2%
    copy filename.txt c:\backupfolder\filename%aa%.txt

それがいくつか役立つことを願っています。スコット……

于 2012-09-26T17:54:16.927 に答える
0

ファイル名を繰り返します。つまり、新しい名前を付けるたびに。数字を追加するだけです。
1つのカウンターを使用し、インクリメントするたびに、インクリメントされたカウンターはfileNameと連結します

于 2012-09-21T09:20:49.557 に答える