批处理脚本复制文件

时间:2012-04-24 23:14:14

标签: batch-file xcopy

我在创建批处理脚本以将文件从源A复制到源B时遇到问题,但需要按日期复制最新文件,文件大小超过1KB。它还需要从源A复制文件并覆盖驻留在源B中的文件。

我使用下面的跟随脚本作为示例我如何设置它。

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

我不知道如何添加命令来获取大于1KB的文件。任何有关这方面的帮助将不胜感激。对不起脚本不是我的事,而且是新的。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
)