|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файлов с одинаковым именем с разных ПК или с backup архива |
|
|
CMD/BAT - [решено] Копирование файлов с одинаковым именем с разных ПК или с backup архива
|
Новый участник Сообщения: 24 |
Доброго времени суток!
Есть несколько ПК. В моем случае их пока 6. На них запущена одна и та же программа. Программа ведет логирование в папку log на каждом ПК. Все логи на 6-ти ПК имеют одно и тоже название. Кроме того, логи старше нескольких дней перекидываются в backup архив на другой ПК, который служит для хранения логов (Backup). На Backup логи в архиве хранятся в папке с именем ПК Т.к. бывает необходимо найти лог с определенным именем на всех ПК или на Backup и собрать их в папку (папка с названием лога) для проверки или передачи: Прошу помощи в написании bat-ника для поиска файлов с определенным именем (одинаковое имя файла) на разных ПК, а если их в папках на ПК нет, то поиск в backup архивах с этих ПК и извлечении данных файлов в папку с названием лога. Т.к. данные файлы носят одинаковое имя, то необходимо их нумеровать (имя файла_001, имя файла_002 и т.д.) или же дописывать к имени файла имя ПК. |
|
Отправлено: 13:16, 20-10-2020 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать |
Последний раз редактировалось Elven, 20-10-2020 в 17:31. Отправлено: 15:08, 20-10-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1218
|
Профиль | Отправить PM | Цитировать Цитата Elven:
|
|
------- Отправлено: 16:36, 20-10-2020 | #3 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать YuS_2, спасибо, исправил. Плохо когда под рукой нету компа с виндой.
|
Последний раз редактировалось Elven, 20-10-2020 в 20:00. Отправлено: 17:32, 20-10-2020 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать @Echo Off Set "AllComp=Comp1 Comp2 Comp3 Comp4 Comp5 Comp6" Set "LogFolder=Log" Set "LogFile=logfile.txt" Set "Backup=\\Server\Backup" Set "BoxOut=Z:\Box_Out" >nul 2>&1 (For %%c In (%AllComp%) Do ( Copy "\\%%c\%LogFolder%\%LogFile%" "%BoxOut%\%%c_%LogFile%" ||( If Not Exist "%BoxOut%\%%c_%LogFile%" ( Copy "%Backup%\%%c\%LogFile%" "%BoxOut%\%%c_%LogFile%" ) Else ( Xcopy /Y /D "%Backup%\%%c\%LogFile%" "%BoxOut%\%%c_%LogFile%" ) ) )) Exit /B Цитата KamikadZZe:
|
||
------- Отправлено: 20:52, 20-10-2020 | #5 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Цитата Elven:
set fname=2020-10-05.gw.uniroll.log FOR /F %%I IN ("\\127.0.0.1\c$\Test") DO ( pushd %%I\1 FOR /F "delims=" %%F IN ('dir /b /s /a:-d %fname%') DO ( echo copy "%%F" "d:\Backup\files\%%~nF-%%I%%~xF" ) popd ) > 5.txt Получаю след результат: Z:\Test\1>(echo copy "Z:\Test\1\2020-10-05.gw.uniroll.log" "d:\Backup\files\2020-10-05.gw.uniroll-\\127.0.0.1\c$\Test.log" ) copy "Z:\Test\1\2020-10-05.gw.uniroll.log" "d:\Backup\files\2020-10-05.gw.uniroll-\\127.0.0.1\c$\Test.log" Это не совсем то что мне нужно, да и файл не копируется. Написал часть кода по копированию, но не совсем получилось что хотел. Получается что копирует файл и тут же его перезаписывает. Посмотрите пожалуйста что я не так сделал?! Сам код: @Echo on path c:\windows\system32 etLocal EnableDelayedExpansion Set sourcedir0=\\127.0.0.1\c$\Test\1 Set destdir=\\127.0.0.1\d$\Backup\files Set files=2020-10-05.gw.uniroll call :SUB0001 :SUB0001 for %%F in (%files%) do (for /L %%N in (6,-1,1) do (if %%N LEQ 9 (set NN=00%%N) else set NN=%%N)) For /F "Tokens=1" %%a In ('dir /A:-D /T:C /O:D "%sourcedir0%\*.*" ^| Findstr /E /c:"%files%"') Do ( if not exist %files%_%NN%.log md "%destdir%\%files% ) xcopy /chkqr %sourcedir0%\%files%.log %destdir%\%files%\%files%_%NN%.log ) Pause ) Получается цикл, копирование и перезапись, а мне нужно чтобы из указанных нескольких путей скопировлся допустим данный файл, а если его нет на ПК, то произошел его поиск в архиве с извлечением в указанную папку. Знаю что, что то делаю не так, но где и что не пойму. Т.е. должно получиться так: Допустим есть: \\127.0.0.1\c$\Test\1 \\127.0.0.1\c$\Test\2 \\127.0.0.1\c$\Test\3 \\127.0.0.1\c$\Test\4 \\127.0.0.1\c$\Test\5 \\127.0.0.1\c$\Test\6 В них есть файл: 2020-10-05.gw.uniroll.log ( где 2020-10-05 - дата, а остальное может меняться gw.uniroll.log, YY.XXX.log) Все это будет указываться в bat-нике Если этого файла нет в ни по одному из пути выше, то необходим поиск и извлечение этого файла из: \\127.0.0.1\c$\Backup\1 \\127.0.0.1\c$\Backup\2 \\127.0.0.1\c$\Backup\3 \\127.0.0.1\c$\Backup\4 \\127.0.0.1\c$\Backup\5 \\127.0.0.1\c$\Backup\6 в файле backup.rar, который дописывается файлами 3-х дневной давности. |
|
Отправлено: 21:20, 20-10-2020 | #6 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Из данного примера и описания можно что ни будь сделать?
Написал часть кода по копированию, но не совсем получилось что хотел.
Получается что копирует файл и тут же его перезаписывает. Посмотрите пожалуйста что я не так сделал?! Сам код: @Echo on path c:\windows\system32 etLocal EnableDelayedExpansion Set sourcedir0=\\127.0.0.1\c$\Test\1 Set destdir=\\127.0.0.1\d$\Backup\files Set files=2020-10-05.gw.uniroll call :SUB0001 :SUB0001 for %%F in (%files%) do (for /L %%N in (6,-1,1) do (if %%N LEQ 9 (set NN=00%%N) else set NN=%%N)) For /F "Tokens=1" %%a In ('dir /A:-D /T:C /O:D "%sourcedir0%\*.*" ^| Findstr /E /c:"%files%"') Do ( if not exist %files%_%NN%.log md "%destdir%\%files% ) xcopy /chkqr %sourcedir0%\%files%.log %destdir%\%files%\%files%_%NN%.log ) Pause ) Получается цикл, копирование и перезапись, а мне нужно чтобы из указанных нескольких путей скопировлся допустим данный файл, а если его нет на ПК, то произошел его поиск в архиве с извлечением в указанную папку. Знаю что, что то делаю не так, но где и что не пойму. Т.е. должно получиться так: Допустим есть: \\127.0.0.1\c$\Test\1 \\127.0.0.1\c$\Test\2 \\127.0.0.1\c$\Test\3 \\127.0.0.1\c$\Test\4 \\127.0.0.1\c$\Test\5 \\127.0.0.1\c$\Test\6 В них есть файл: 2020-10-05.gw.uniroll.log ( где 2020-10-05 - дата, а остальное может меняться gw.uniroll.log, YY.XXX.log) Все это будет указываться в bat-нике Если этого файла нет в ни по одному из пути выше, то необходим поиск и извлечение этого файла из: \\127.0.0.1\c$\Backup\1 \\127.0.0.1\c$\Backup\2 \\127.0.0.1\c$\Backup\3 \\127.0.0.1\c$\Backup\4 \\127.0.0.1\c$\Backup\5 \\127.0.0.1\c$\Backup\6 в файле backup.rar, который дописывается файлами 3-х дневной давности. |
|
Отправлено: 22:15, 20-10-2020 | #7 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать KamikadZZe, используйте для кода тег code #. А то не особенно удобно читать код размазанный в текст.
Цитата megaloman:
![]() |
|
Отправлено: 06:48, 21-10-2020 | #8 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Цитата Elven:
@Echo on path c:\windows\system32 etLocal EnableDelayedExpansion Set sourcedir0=\\127.0.0.1\c$\Test\1 Set destdir=\\127.0.0.1\d$\Backup\files Set files=2020-10-05.gw.uniroll call :SUB0001 :SUB0001 For %%F in (%files%) do (for /L %%N in (6,-1,1) do (if %%N LEQ 9 (set NN=00%%N) else set NN=%%N) ) For /F "Tokens=1" %%a In ('dir /A:-D /T:C /O:D "%sourcedir0%\*.*" ^| Findstr /E /c:"%files%"') Do ( if not exist %files%_%NN%.log md "%destdir%\%files% ) xcopy /chkqr %sourcedir0%\%files%.log %destdir%\%files%\%files%_%NN%.log ) Pause |
|
Отправлено: 10:05, 21-10-2020 | #9 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать Доброго времени суток!
Ребят, по задаче нет пока решений? |
Отправлено: 17:32, 23-10-2020 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Завершение всех процессов с одинаковым именем, если их больше 2 | santey007 | Скриптовые языки администрирования Windows | 13 | 03-02-2020 07:24 | |
upload большого архива или десятков больших файлов в облака | algusev | Хочу все знать | 7 | 02-08-2019 14:47 | |
CMD/BAT - Копирование файлов из разных папок | yamixon | Скриптовые языки администрирования Windows | 0 | 14-12-2016 15:34 | |
Доступ - Сетевой доступ с одинаковым именем пользователя | AlexeyA | Microsoft Windows 10 | 6 | 01-09-2016 19:15 | |
Прочее - [решено] 2 ПК с одинаковым именем | krokradio | Сетевые технологии | 2 | 04-02-2014 15:05 |
|