2015-02-06 2 views
0

Я хочу скопировать последние 4 файла резервной копии SQL из каталога. Теперь у меня есть код, этот экземпляр самый последний один файл, но я хочу скопировать последние четыре файла.копировать последние четыре файла с использованием командного файла

Мои От места это: E:\BackUp
назначения Расположение: D:\BackUp

Код:

FOR /F "delims=|" %%I IN ('DIR "E:\BackUp\*.bak" /B /O:D /S') DO SET NewestFile=%%I 
copy "%NewestFile%" "D:\BackUp" 

И я также нужен пакетный файл для копирования всех файлов, где создана дата дата сегодня. Использовали «/d», но я не могу получить правильный результат?

Как я могу это сделать?

ответ

0

Я хотел бы использовать это:

:: Variables are A, B, C, D 
DIR "E:\BackUp\*.bak" /B /O:D /S > filelist.tmp 
3<filelist.tmp (
    for %%a in (A B C D) do (
    set /p %%a=<&3 
) 
) 
del filelist.tmp 
:: Newest File 
copy "%A%" "D:\BackUp" 
:: Second Newest File 
copy "%B%" "D:\BackUp" 
:: Thirst Newest File 
copy "%C%" "D:\BackUp" 
:: Fourth Newest File 
copy "%D%" "D:\BackUp" 

Что касается копирования каждого файла, созданного сегодня, должность, что в качестве отдельного вопроса на SO.

+0

привет @monacraft использовали ваш код, но он скопирует самые старые 4 файла, он не скопирует последние 4 файла .. – user3467596

0

Вы можете использовать тот же подход программы "Tail.bat", как описано в this solution:

EDIT: Модифицированная в соответствии с просьбой в комментариях

@echo off 
setlocal EnableDelayedExpansion 

set /A firstTail=1, lastTail=0 

for /F "delims=" %%a in ('dir "E:\BackUp\*.bak" /B /O:D /S') do (
    set /A lastTail+=1, lines=lastTail-firstTail+1 
    set "lastLine[!lastTail!]=%%a" 
    if !lines! gtr 4 (
     set "lastLine[!firstTail!]=" 
     set /A firstTail+=1 
    ) 
) 
for /L %%i in (%firstTail%,1,%lastTail%) do (
    for /F "delims=_" %%a in ("!lastLine[%%i]!") do (
     copy "!lastLine[%%i]!" "D:\BackUp\%%a.bak" 
    ) 
) 
+0

Very Thaks @ Aacini, он будет работать супер ... – user3467596

+0

Привет @Aachini У меня есть еще одно требование, я хочу переименовать этот четыре файла, например, имя файла будет да tabase1_02082015.bak, Database2_02082015.bak, Database3_02082015.bak, Database3_02082015.bak что-то вроде этого, я хочу удалить после «_», после удаления имя файла должно быть Database1.bak, Database2.bak, Database3.bak, Database4. bak Как я могу достичь этого, пожалуйста, помогите мне .. – user3467596

+0

Проверьте модификацию ... – Aacini

Смежные вопросы