![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как автоматически обновить содержимое архивов? |
|
CMD/BAT - Как автоматически обновить содержимое архивов?
|
Новый участник Сообщения: 11 |
Добрый день! Как автоматически обновить на основании содержимого текстового документа содержимое файла архивов?
В папке имеются множественные архивы формата zip с текстовыми документами в формате txt. То есть структура такая: папка - архив aaa.txt.zip - - текстовый файл aaa.txt - архив bbb.txt.zip - - текстовый файл bbb.txt - архив ccc.txt.zip - - текстовый файл ccc.txt - и так далее файл обновления текстовый файл - text.aaa - text2.aaa - text3.aaa - text4.bbb - text5.bbb - text6.ccc - text7.ccc - и так далее Схематически:
Прикрепил схематический пример как было и как должно получиться И соответственно обратный эффект при наличии другого файла - удалять строки в архивах если есть в текстовом файле. |
|
Отправлено: 09:58, 23-07-2021 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Вы уж определитесь:
Скрытый текст
![]() |
Отправлено: 18:47, 23-07-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Iska, правильно в структуре указано
|
Отправлено: 20:22, 23-07-2021 | #3 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Medvedoc,
@Echo Off cls Set "BoxIn=Z:\Box_In\Пример" Set "Ext=zip" Set "Ext=txt.zip" Set "FileTxt=Z:\Box_In\Пример\Текстовый файл.txt" Set Arc="C:\Program Files\WinRAR\WinRAR.exe" If Not Exist "%FileTxt%" Echo File "%FileTxt%" not found &Pause &Exit /B Set "DirTmp=%BoxIn%\%~nx0.tmp" 2>nul Rd /S /Q "%DirTmp%" Md "%DirTmp%" Pushd %BoxIn% &&( FOR /F "usebackq delims=" %%s IN ("%FileTxt%") DO ( Echo %%s>>"%DirTmp%\%%~xs.txt" ) For /F "usebackq tokens=* delims=." %%i In (`2^>nul Dir "%DirTmp%\.*.txt" /B /A:-D`) Do ( If Exist "%%~ni.%Ext%" ( %Arc% e -y -ibck "%%~ni.%Ext%" "%%i" If Exist "%%i" ( >nul Copy /B "%%i"+"%DirTmp%\.%%i" "%%i" %Arc% a -y -ep -df -ibck "%%~ni.%Ext%" "%%i" ) ) ) Popd ) 2>nul Rd /S /Q "%DirTmp%" FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "ToDay=%%d" >nul Move "%FileTxt%" "%FileTxt%.%ToDay%" Pause Exit /B Set "Ext=txt.zip" удалите |
------- Последний раз редактировалось megaloman, 25-07-2021 в 08:41. Отправлено: 22:48, 23-07-2021 | #4 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать megaloman, отлично работает. Единственное только проблемы с кириллицей, но заменив название файла на латиницу все прекрасно сработало.
А как сделать теперь наоборот? Поиск по папкам и удаление если имеется? То есть берется название из текстового файла пробегается по архивам и если такое есть просто удаляет его. |
|
Отправлено: 08:50, 24-07-2021 | #5 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Medvedoc, чтобы не было проблем с кириллицей, сохраняйте батник в 866 кодировке.
Либо после cls вставьте >nul chcp 1251 Цитата Medvedoc:
|
|
------- Отправлено: 08:57, 24-07-2021 | #6 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Medvedoc, Если удалить в заархивированном файле строки, указанные в текстовом, то:
@Echo Off cls Set "BoxIn=Z:\Box_In\Пример" Set "Ext=zip" Set "Ext=txt.zip" Set "FileTxt=Z:\Box_In\Пример\Текстовый файл.txt" Set Arc="C:\Program Files\WinRAR\WinRAR.exe" If Not Exist "%FileTxt%" Echo File "%FileTxt%" not found &Pause &Exit /B Set "DirTmp=%BoxIn%\%~nx0.tmp" 2>nul Rd /S /Q "%DirTmp%" Md "%DirTmp%" Pushd %BoxIn% &&( FOR /F "usebackq delims=" %%s IN ("%FileTxt%") DO ( Echo %%s>>"%DirTmp%\%%~xs.txt" ) For /F "usebackq tokens=* delims=." %%i In (`2^>nul Dir "%DirTmp%\.*.txt" /B /A:-D`) Do ( If Exist "%%~ni.%Ext%" ( %Arc% e -y -ibck "%%~ni.%Ext%" "%%i" If Exist "%%i" ( >".%%i" FindStr /B /L /I /V /G:"%DirTmp%\.%%i" "%%i" >nul Move /Y ".%%i" "%%i" %Arc% a -y -ep -df -ibck "%%~ni.%Ext%" "%%i" ) ) ) Popd ) 2>nul Rd /S /Q "%DirTmp%" FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "ToDay=%%d" >nul Move "%FileTxt%" "%FileTxt%.%ToDay%" Pause Exit /B |
------- Последний раз редактировалось megaloman, 25-07-2021 в 08:39. Отправлено: 12:56, 24-07-2021 | #7 |
Новый участник Сообщения: 11
|
Профиль | Отправить PM | Цитировать Да, все отлично работает
![]() А что нужно добавить, чтобы в командной строке видеть процесс выполнения? А то когда папок больше 100 не понятно идет процесс или нет |
Отправлено: 19:26, 24-07-2021 | #8 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата Medvedoc:
|
|
------- Последний раз редактировалось megaloman, 25-07-2021 в 08:42. Отправлено: 19:38, 24-07-2021 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Как автоматически обновить конфигурацию оборудования в диспетчере устройств? | nikhama | AutoIt | 1 | 12-08-2011 10:24 | |
Win32 API - [решено] [C++] Как программно обновить содержимое окна | Drongo | Программирование и базы данных | 8 | 31-03-2009 01:47 | |
как обновить и чем обновить BIOS ASUS P4P800se | Brad | Поиск драйверов, прошивок и руководств | 1 | 30-03-2009 05:05 | |
как автоматически установить драйвера из архивов при установке винды | epu-sunter | Автоматическая установка Windows 2000/XP/2003 | 2 | 13-01-2009 08:20 | |
Разное - [решено] Как лучше всего обновить систему. И стоит ее обновить? | Bester | Microsoft Windows 2000/XP | 7 | 05-01-2008 20:53 |
|