0

ソース A からソース B にファイルをコピーするバッチ スクリプトを作成しようとすると問題が発生しますが、ファイル サイズが 1 KB を超える最新のファイルを日付ごとにコピーする必要があります。また、ソース A からファイルをコピーする必要があり、ソース B にあるファイルを上書きします。

設定方法の例として、以下のスクリプトを使用します。

xcopy E:\sourceA\testA_* /DA C:\sourceB\TestB.txt /Y

1KB を超えるファイルを取得するコマンドを追加する方法がわかりません。これに関する任意の助けをいただければ幸いです。申し訳ありませんが、スクリプトは私のものではなく、新しいものです。

4

2 に答える 2

1

あなたの要件を完全に理解しているかどうかはわかりませんが、これはあなたが求めていたものだと思います

@echo off
pushd "E:\sourceA"
for /f "eol=: delims=" %%F in ('dir /a-d /b /o-d "testA_*"') do (
  if %%~zF geq 1024 (
      copy /y "%%F" "C:\sourceB\TestB.txt"
      goto :break
    )
)
:break

ファイルに Archive 属性があり、既存の TestB.txt よりも新しい場合にのみファイルをコピーする場合は、次のようにします。

@echo off
pushd "E:\sourceA"
for /f "eol=: delims=" %%F in ('dir /aa-d /b /o-d "testA_*"') do (
  if %%~zF geq 1024 (
      echo f|xcopy /dy "%%F" "C:\sourceB\TestB.txt"
      goto :break
    )
)
:break
于 2012-04-25T02:53:57.480 に答える
0
@Echo OFF
Setlocal enabledelayedexpansion

:: By Elektro H@cker
::
:: Copy the Newest file in a folder greater than X bytes to a destination directory.
:: You maybe want to modify these variables:
::
Set "Source=%CD%"
Set "Destination=C:\Test\"
Set "Size=1024"
:: :: :: :: :: :: :: :: ::

for /F "tokens=1-4 delims=;" %%a in ('forfiles /P "%SOURCE%" /C "cmd /c echo @fdate;@ftime;@fsize;@path"') do (
    If %%c GTR %SIZE% (
        Set DAY=%%a
        Set DAY=!DAY:/=!
        Set HOUR=%%b
        Set HOUR=!HOUR::=!
        Echo !DAY!!HOUR!;%%d >> "%TEMP%\NewestFile.txt"
    )
)

for /F "tokens=2 delims=;" %%# in ('Type "%TEMP%\NewestFile.txt" ^| Sort /R') do (
    Copy /Y %%# "%Destination%" 1>NUL
    Del /Q "%TEMP%\NewestFile.txt"
    Exit
)
于 2012-04-25T14:08:19.903 に答える