0

我在尝试创建批处理脚本以将文件从源 A 复制到源 B 时遇到问题,但需要按日期复制文件大小大于 1KB 的最新文件。它还需要从源 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 回答