|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Создать батник с логом копирования и проверкой. |
|
|
CMD/BAT - [решено] Создать батник с логом копирования и проверкой.
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать
Требуется создать батник, который бы копровал из 3-х папок файлы в 1, записывая в текстовый файл имена скопированых файлов и при следующем запуске не копировал бы их. (папка переодически отчищается другой программой).
Заранее спасибо. |
|
Отправлено: 11:41, 13-01-2012 |
Старожил Сообщения: 263
|
Профиль | Отправить PM | Цитировать TupaH, можно попробовать вот так(копирует файлы *.ini из каталогов d:\1, d:\2, d:\3 в каталог d:\fin так же ведется отчет о скопированных файлах в report.txt)
@echo off set put1=d:\1 set put2=d:\2 set put3=d:\3 set finP=d:\fin set report=d:\report.txt for /f %%a in (' dir /b %put1%\*.ini ') do if not exist %finP%\%%a echo %%a>>%report% && ( echo n|copy /-y %put1%\%%a %finP%\ ) for /f %%b in (' dir /b %put2%\*.ini ') do if not exist %finP%\%%b echo %%b>>%report% && ( echo n|copy /-y %put2%\%%b %finP%\ ) for /f %%c in (' dir /b %put3%\*.ini ') do if not exist %finP%\%%c echo %%c>>%report% && ( echo n|copy /-y %put3%\%%c %finP%\ ) goto:eof |
Последний раз редактировалось zion87, 13-01-2012 в 21:55. Отправлено: 20:09, 13-01-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать можно не txt с именами обновлять, а использовать предназначенный специально для этого атрибут файла "archive"
|
Отправлено: 23:36, 13-01-2012 | #3 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Почти то что нужно, только нужно чтобы не копировал уже ранее скопированные файлы. Чтобы проверял проверял в отчете report.txt копировался ли этот файл раньше, если да, то не копировать, если нет, то скопировать. Этот алгоритм если удалить из папки d:\fin уже скопированный файл, копирует его туда опять.
|
Отправлено: 15:07, 15-01-2012 | #4 |
Старожил Сообщения: 263
|
Профиль | Отправить PM | Цитировать TupaH, я сам слабо разбираюсь во всем этом деле не знаю как сравнить переменную с каждой строчкой из файла, может другие товарищи подскажут... если нет, то смогу предложить то что и я смогу сделать, создать в папке fin директорию temp и создавать там файлы с именами скопированных и размером 0 байт и проверка будет такая:
если файл с таким именем есть в папке d:\fin\temp - есть то копирования не будет... |
|
Отправлено: 18:05, 15-01-2012 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off SETLOCAL ENABLEEXTENSIONS SETLOCAL ENABLEDELAYEDEXPANSION Set From="E:\DelTmp\Dir 1" "E:\DelTmp\Dir 2" "E:\DelTmp\Dir 3" Set To=E:\DelTmp\Dir 4 Set LogFile=E:\DelTmp\Log.txt If Not Exist %LogFile% cd / >%LogFile% FOR %%d IN (%From%) DO For %%f In ("%%~d\*.*") Do ( FOR /F "usebackq delims=" %%n IN (`xcopy "%%f" "%To%\" /EXCLUDE:%LogFile% /Q`) DO ( Set nfil=%%n Set nFil=!nFil:~-2! If !nFil!==1. Echo %%~nxf>>%LogFile% ) ) |
------- Последний раз редактировалось megaloman, 15-01-2012 в 23:47. Отправлено: 22:42, 15-01-2012 | #6 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Спасибо, то что нужно!!
|
Отправлено: 12:45, 18-01-2012 | #7 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Немного не понятно, не работает на WinServer 2003, не пишет лог файлов, сам файл создает, на XP все без проблем.
|
Отправлено: 13:49, 23-01-2012 | #8 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Один и тотже батник, в одной и тойже папке на ХР работает, на 2003 нет. Проблема не с доступом, если убираю условие приверки скопирован ли файл
Цитата megaloman:
Цитата megaloman:
и недо конца поны эти строчки, поясните плиз, особенно 2-я и 3-я Цитата megaloman:
|
|||
Отправлено: 15:41, 23-01-2012 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Я в недоумении: в Win2003 R2 Enterprise всё чудненько работает. Вот немного изменённый батник
@Echo Off SETLOCAL ENABLEEXTENSIONS SETLOCAL ENABLEDELAYEDEXPANSION Set From="D:\DelTmp\Dir 1" "D:\DelTmp\Dir 2" "D:\DelTmp\Dir 3" Set To=D:\DelTmp\Dir 4 Set LogFile=D:\DelTmp\Log.txt If Not Exist %LogFile% cd "%~dp0" >%LogFile% rem ------------------------------------------ Echo "%From%">kuku Echo "%To%">>kuku Echo "%LogFile%">>kuku rem ------------------------------------------ FOR %%d IN (%From%) DO For %%f In ( "%%~d\*.*" ) Do ( FOR /F "usebackq delims=" %%n IN (`xcopy "%%f" "%To%\" /EXCLUDE:%LogFile% /Q /Y`) DO ( Set nfil=%%n Set nFil=!nFil:~-2! rem ------------------------------------------ Echo %%n !nFil! >>kuku rem ------------------------------------------ If !nFil!==1. Echo %%~nxf>>%LogFile% ) ) Для отладки посылаю Вам свою упакованную папку с примером - распакуйте в корень D: с поддиректориями и выполните внутри папки DelTmp имеющийся батник |
------- Последний раз редактировалось megaloman, 23-01-2012 в 19:25. Отправлено: 19:18, 23-01-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] помагите написать батник для копирования папки | robingut | Скриптовые языки администрирования Windows | 23 | 04-05-2016 11:22 | |
CMD/BAT - [решено] Батник для поиска и копирования | streamrider | Скриптовые языки администрирования Windows | 10 | 25-08-2010 20:00 | |
CMD/BAT - [Решено] Написать батник для копирования одного файла во многие папки рекурсивно. | Iodine | Скриптовые языки администрирования Windows | 5 | 20-05-2010 22:31 | |
CMD/BAT - [решено] батник для копирования файлов из ряда поддиректорий | xumuk032 | Скриптовые языки администрирования Windows | 3 | 27-04-2010 21:23 | |
CMD/BAT - помогите сделать батник копирования папки | siz | Скриптовые языки администрирования Windows | 7 | 08-10-2009 11:45 |
|