Показать полную графическую версию : Обновления информации на USB (разделе HDD)
SergioBS
14-01-2020, 21:46
megaloman,
Под спойлером обычный листинг (текстовый файл с названиями каталогов в заданной директории).
"В каком виде? Вы хотите вести список удаляемых папок в каком-то файле?" - я думал, что проще всего в *.bat (cmd), в любом, который доступен для редактирования...
Попалась на глаза тема:
"Создайте командный файл, который удаляет все файлы и каталоги, в заданных каталогах, указанные в виде списка, занесенного в текстовый файл."
*********************************************
@echo off
SetLocal EnableExtensions
set list=filefolderslist.txt
For /F "UsebackQ delims=" %%a in ("%list%") do (
cd /d "%%~a"
rmdir /S /Q "%%~a" 2>NUL
)
********************************************
Может таким путем пойти? Этот код можно как-то заточить под мои нужды, и какая структура у *.txt - список чем разделен -переводом строки, или символом [;] или пробелом...
Iska,
Не ругайтесь пож-ста, ищу оптимальный вариант... Умел бы SFX WinRAR удалять каталоги, а не только файлы, Желательно перед распаковкой :(
SergioBS, да я не ругаюсь.
Умел бы WinRAR удалять каталоги, а не только файлы »
И самораспаковывающиеся модули WinRAR и 7-Zip, и инсталляторы различного толка рассчитаны именно на инсталляцию.
я думал, что проще всего в *.bat (cmd), в любом, который доступен для редактирования... »
Не, тут надо так — мухи отдельно, котлеты отдельно отдельно — код, отдельно — конфигурация. А уж что там в последнем будет — plain text, ini, xml, json — не суть важно.
SergioBS
14-01-2020, 23:37
Iska,
Уже голова раскалывается... Есть основная работа... Если накопительный UPD... вижу такое, повторюсь после редактирования:
прописывать в батнике (или *.txt) все каталоги. которые обновлялись - удалить каталог "Моя программа 1.0", "Моя программа 1.5" если появилась "Моя программа 2.0"
На сегодня достаточно... Иначе умом тронусь в 52 года... Рановато!
megaloman
14-01-2020, 23:44
Каталоги разделов, которые затронуло обновление
<Windows>
<Антивирусы>
<Графика>
<Интернет>
<Мультимедиа>
<Офис>
<Утилиты>
---------------------------------------------------------
Каталоги для удаления в \winsoft\Windows
---------------------------------------------------------
Удалить <StartIsBack AiO v1.0.17> - SFX добавил каталог StartIsBack AIO v1.0.18
SFX добавил новую программу TeamViewer v15.1.3937
---------------------------------------------------------
Каталоги для удаления в \winsoft\Антивирусы
---------------------------------------------------------
Удалить <Windows Firewall Control v6.0.2.0> - SFX добавил каталог Windows Firewall Control v6.1.0.0
---------------------------------------------------------
Каталоги для удаления в \winsoft\Графика
---------------------------------------------------------
Удалить <Athentech Perfectly Clear workbench v3.9.0.1710> - SFX добавил каталог Perfectly Clear v3.9.0.1722
Удалить <WinSnap v5.1.6> - SFX добавил каталог WinSnap v5.1.7
---------------------------------------------------------
Каталоги для удаления в \winsoft\Интернет
---------------------------------------------------------
Удалить <Viber v12.1.0.29> - SFX добавил каталог viber v12.2.0.54
---------------------------------------------------------
Каталоги для удаления в \winsoft\Мультимедиа
---------------------------------------------------------
Удалить <EZ CD Audio Converter v9.0.5.1> - SFX добавил каталог EZ CD Audio Converter v9.0.7.1
Удалить <VidCoder v5.13> - SFX добавил каталог VidCoder v5.14
---------------------------------------------------------
Каталоги для удаления\winsoft\Офис
---------------------------------------------------------
Удалить <VueScan v9.7.18> - SFX добавил каталог VueScan v9.7.20
---------------------------------------------------------
Каталоги для удаления в \winsoft\Утилиты
---------------------------------------------------------
Удалить <PrivaZer v3.0.85> - SFX добавил каталог PrivaZer v3.0.86
Удалить <Windows 10 Manager v3.1.9> - SFX добавил каталог Windows 10 Manager v3.2.0
Удалить <Z-Info v1.0.18> - SFX добавил каталог Z-Info v1.0.19
@Echo Off
Cls
>nul chcp 1251
Set "Listing=Z:\Box_In\listing.txt"
Set "SpisD="
Set /A N=1
Set "@@D%N%=A"
FOR /F "usebackq tokens=1 skip=1 delims=:" %%i IN (`"wmic logicaldisk get caption | FINDSTR /R /C:"[A-Z]""`) DO (
Call Set /A N+=1
Call Set "@@D%%N%%=%%i"
Call Set "SpisD=%%SpisD%%%%i"
)
CHOICE /C A%SpisD% /M "%SpisD%-select a drive letter, A-Complete batch file"
If %Errorlevel%==1 Exit /B 0
Call Set "DBoxIn=%%@@D%ErrorLevel%%%"
FOR /F "usebackq delims=" %%s IN (`2^>nul More "%Listing%" ^| FIND /I "Каталог"`) Do Call :MyFind "%DBoxIn%" "%%s"
Pause
Exit /B
:MyFind
Set "SS=%~2"
Set "SS=%SS:*\=%"
If Not "%SS%"==%2 GoTo :Catal
If "%ND%"=="" Exit /B 2
FOR /F "delims=<> tokens=2" %%c IN (%2) Do 2>nul RD "%ND%\%%c" /S /Q
Exit /B
:Catal
Set "ND=%~1:\%SS%"
If Exist "%ND%" Exit /B 0
Echo Folder "%ND%" not found
Set "ND="
Exit /B 2
Exit /B 1
Кстати Нет скрипт удаляет совсем не те каталоги, которые добавились с новыми версиями программ » Так и должно быть. Должен остаться последний добавленный каталог. Или я неправильно понимаю?
SergioBS
15-01-2020, 07:18
megaloman,
Не могу понять Ваш скрипт... Здесь нет привязки по времени (дата создания каталога, последний добавленный каталог), т.к есть программы, которые обновляются раз в год, а то и вообще прекращена их поддержка (но они достойны быть в сборке). Простое (примитивное) действие - удалить выбранные каталоги (которые будут прописаны ручками) - не нужно все усложнять...
megaloman
15-01-2020, 13:11
SergioBS, Давайте разберёмся с постановкой. Простое (примитивное) действие - удалить выбранные каталоги (которые будут прописаны ручками) - не нужно все усложнять... » Напишите и предоставьте пример, как Вы это хотите видеть, например, в обычном текстовом файле. Батник написать при такой постановке не проблема.
Не могу понять Ваш скрипт... Здесь нет привязки по времени (дата создания каталога, последний добавленный каталог), » В скрипте (http://forum.oszone.net/post-2904906-14.html) именно так и сделано.
Если есть ранее созданные каталоги
"Моя программа 1.0", "Моя программа 1.5"
и если после этого появилась "Моя программа 2.0",
то будут удалены "Моя программа 1.0", "Моя программа 1.5".
Если есть каталог "Чужая программа 000", созданный неважно когда, он не будет удаляться, пока не появится его новый вариант. То есть Ваше: "есть программы, которые обновляются раз в год, а то и вообще прекращена их поддержка (но они достойны быть в сборке)" - выполняется в полной мере.
Умел бы SFX WinRAR удалять каталоги, а не только файлы, Желательно перед распаковкой » Если бы не SFX, можно было бы придумать. После распаковки - пожалуйста. Вы дали листинг. В скрипте (http://forum.oszone.net/post-2905017-25.html)это реализовано. Если в листинге есть, например, строка
Удалить <Athentech Perfectly Clear workbench v3.9.0.1710> - SFX добавил каталог Perfectly Clear v3.9.0.1722
то скрипт удалит каталог Athentech Perfectly Clear workbench v3.9.0.1710 Тут, естественно, совершенно нет никакой привязки ко времени - что предписывается, то и делаем. И ничего не выдумываем, и ничего иного не трогаем.
не нужно все усложнять... » - надо стремиться убрать человеческий фактор -будут прописаны ручками, будут с большой вероятностью ошибки.
SergioBS
15-01-2020, 13:57
megaloman,
Спасибо за активное участие в создании концепции пакетов обновлений для реанимации.
"Если бы не SFX, можно было бы придумать" - а что могло бы быть проще? На трекерах не приветствуются простые архивы, тем более папки с навалом файлов... Думаю, что состав обновления все же распаковывать пользователем в корень USB(HDD) своего раздела. Состав вижу такой:
1. rean.exe - файл запускает оболочку для использования в среде Windows
2. rean.apm - файл библиотека к файлу rean.exe
(Будут в любом случае обновляться...) посредством SFX
3. каталог winsoft - программы Windows в нем будут каталоги программ по разделам, в них новые версии программ
4. upd.bat - запуск скрипта автоматический после извлечения.
5. folderslist.txt - листинг каталогов для удаления из директории winsoft.
Скрипт умеет искать каталоги для удаления в папке winsoft (в той же директории со скриптом, если нет, то нужно будет прописывать полный путь, не зная какую букву выберет пользователь...)? То тогда вижу листинг для UPD01 в следующем виде:
del <StartIsBack AiO v1.0.17>
del <Windows Firewall Control v6.0.2.0>
del <Athentech Perfectly Clear workbench v3.9.0.1710>
del <WinSnap v5.1.6>
del <Viber v12.1.0.29>
del <EZ CD Audio Converter v9.0.5.1>
del <VidCoder v5.13>
del <VueScan v9.7.18>
del <PrivaZer v3.0.85>
del <Windows 10 Manager v3.1.9>
del <Z-Info v1.0.18>
В идеале после отработки скрипта п4. и п.5 самоудаляются, не загрязняют корень диска(раздела).
SergioBS, Правильно ли я понимаю, что:
1. На компьютере А скачивается торрент (очередное обновление этого реаниматора).
2. Содержимое образа раскатывается на флешку (или извлекается другим способом)
3. Вручную подготавливается патч-обновление для неких других флешек на местах, где проблематично качать и записывать 32Гб данных.
??
megaloman
15-01-2020, 15:02
Скрипт умеет искать каталоги для удаления в папке winsoft (в той же директории со скриптом »upd.bat? В какой директории? Допустим, Z:\ или Z:\winsoft\ ?
SergioBS
15-01-2020, 15:15
https://b.radikal.ru/b05/2001/6b/87c13f1b0cb4t.jpg (https://b.radikal.ru/b05/2001/6b/87c13f1b0cb4.jpg)
iglezz,
Основная раздача torrent файл с образом *.img (32Gb) - его трогать не буду, как раздается, так и раздается. Иногда планирую делать обновления программ для Windows 200-300Mb, скорее всего буду выкладывать на Яндекс.диск или Mail если кому интересно... Все верно.
megaloman,
Папка winsoft в той же директории где и upd.bat. Вот с буквой раздела (диска) тут сложнее, у каждого она своя... Путь должен быть относительный. Как это сделать не знаю...
Состав вижу такой:
1. rean.exe - файл запускает оболочку для использования в среде Windows »
SergioBS, тогда берите какой-нибудь AutoPlay Media Studio, лепите оболочку (интерфейс плюс код на Lua «за кадром»), в которой всё это будет — загрузили текущее обновление, запустили, оно попросило выбрать раздел, проверило, что выбранный раздел действительно содержит то, что должно быть, просканировало этот раздел, вывело список того, что будет обновлено и чем будет обновлено, отметило их, например, флажками в списке. Хочет человек обновлять как есть, по умолчанию — оставляет отметки. Не хочет что-то обновлять — снимает потребные отметки. Затем нажимает Обновить и наслаждается процессом обновления/замены/актуализации.
SergioBS
15-01-2020, 17:29
Iska,
AutoPlay Media Studio - Я не знаком с этой программой, оболочка делалась в другой программе. Кто нибудь здесь может помочь с моим вопросом? Скрипт или маленькая программка разницы нет.
SergioBS, я знаком и с другими. Проблема в том, что если нет внутреннего языка, хотя бы мало-мальского — за такие оболочки и браться не стоит, одни только очередные свистоперделки на выходе получатся. В этом отношении AutoPlay Media Studio со своим Lua — хоть что-то более-менее вменяемое, нежели набор рюшечек.
megaloman
15-01-2020, 21:46
SergioBS, @Echo Off
Set "SFXX=winsoft.exe"
Set "BoxIn=winsoft"
Set "SFX=%~dp0%SFXX%"
GoTo :Script
:DelDir
\winsoft\Windows\
StartIsBack AiO v1.0.17
StartIsBack AIO v1.0.18
TeamViewer v15.1.3937
\winsoft\Антивирусы\
Windows Firewall Control v6.0.2.0
Windows Firewall Control v6.1.0.0
\winsoft\Графика\
Athentech Perfectly Clear workbench v3.9.0.1710
Perfectly Clear v3.9.0.1722
WinSnap v5.1.6
WinSnap v5.1.7
\winsoft\Интернет\
Viber v12.1.0.29
viber v12.2.0.54
\winsoft\Мультимедиа\
EZ CD Audio Converter v9.0.5.1
EZ CD Audio Converter v9.0.7.1
MKVToolNix v42.0.0
VidCoder v5.13
VidCoder v5.14
\winsoft\Офис\
VueScan v9.7.18
VueScan v9.7.20
\winsoft\Утилиты\
PrivaZer v3.0.85
PrivaZer v3.0.86
Windows 10 Manager v3.1.9
Windows 10 Manager v3.2.0
Z-Info v1.0.18
z-info v1.0.19
GoTo :Eof
rem ===========================================================
:Script
cls
Call :SeleDisk "DSel" ||Exit /B %Errorlevel%
rem If Not Exist "%SFX%" (Echo "%SFX%" not found &Pause &Exit /B 2)
rem --- Запуск SFX ----------------------------------------------------------------------------------
Call :SFXout "%DSel%" "%BoxIn%" "%SFX%" ||Exit /B %Errorlevel%
FOR /F "usebackq tokens=1* delims=:" %%a IN (`2^>nul FINDSTR /I /L /B /N ":DelDir" "%~dpnx0"`) DO (
FOR /F "usebackq delims=" %%s IN (`2^>nul More +%%a "%~dpnx0"`) DO (
Echo %%s|>nul 2>nul FINDSTR /I /L /B "GoTo :Eof"&&Exit /B
Call :Working "%DSel%" "%%s" ||Exit /B %Errorlevel%
)
)
Pause
Exit /B
:SFXout
SetLocal
Pushd "%~1:\" ||(Echo "%~1:\" not found &Pause &Exit /B 2)
If Not Exist "%~1:\%~2" (Echo Folder "%~1:\%~2" not found &Pause &Exit /B 2)
%3
Popd
EndLocal
Exit /B 0
:SeleDisk
SetLocal
Set "SpisD="
Set /A N=1
Set "@@D%N%=A"
FOR /F "usebackq tokens=1 skip=1 delims=:" %%i IN (`"wmic logicaldisk get caption | FINDSTR /R /C:"[A-Z]""`) DO (
Call Set /A N+=1
Call Set "@@D%%N%%=%%i"
Call Set "SpisD=%%SpisD%%%%i"
)
Echo ===========================================================
Echo Select output disk
Echo.
CHOICE /C A%SpisD% /M "%SpisD%-select a drive letter, A-Complete batch file"
If %Errorlevel%==1 Exit /B 3
Call Set "DDD=%%@@D%ErrorLevel%%%"
Echo ===========================================================
EndLocal &Set "%~1=%DDD%"
Exit /B 0
:Working
Call :DelSpace "%~2" "Str"
Set "SS=%Str%"
Set "SS=%SS:*\=%"
If Not "%SS%"=="%Str%" GoTo :Catal
If "%ND%"=="" Exit /B 0
2>nul RD "%ND%%Str%" /S /Q
rem 2>nul Md "%ND%%Str%"
Exit /B
:Catal
Set "ND=%~1:\%SS%"
If Exist "%ND%" Exit /B 0
Echo Folder "%ND%" not found
Set "ND="
Exit /B 0
:DelSpace
SetLocal
Set "SSS=%~1"
:Begin
Set "SS=%SSS%"
If "%SSS:~-1%"==" " Set "SSS=%SSS:~0,-1%"
If "%SSS:~0,1%"==" " Set "SSS=%SSS:~1%"
If Not "%SS%"=="%SSS%" GoTo :Begin
EndLocal &Set "%~2=%SSS%"
Exit /B
Батник и SFX-файл должны быть в одной папке
Set "SFXX=winsoft.exe" -здесь задаётся имя SFX-файла
Set "BoxIn=winsoft" -здесь задаётся имя папки, куда распаковывается SFX
Между :DelDir и GoTo :Eof список удаляемых папок (Вы именно этого хотели, наваять его вручную!) по следующей структуре
\winsoft\Графика\ - имя корневой директории группы файлов
Athentech Perfectly Clear workbench v3.9.0.1710 - имена поддиректорий в этой корневой директории
Perfectly Clear v3.9.0.1722
WinSnap v5.1.6
WinSnap v5.1.7
Вы вроде бы хотели всё расположить в батнике?
SFX можно не запускать. Закомментируйте красную строку
Кроме того, сейчас закомментирован контроль наличия SFX
Для выбора имени диска предоставляется диалог выбора буквы диска из имеющихся
В интерфейсе SFX этот выбор будет подсвечен автоматически
SergioBS
16-01-2020, 10:13
megaloman, Спасибо, уже понятнее в скрипте. Нужно тестить и общаться.
Наколько я понял upd.bat нельзя просто кинуть в SFX и там его исполнить? На нужном разделе...
megaloman
16-01-2020, 13:33
нельзя просто кинуть в SFX и там его исполнить? » Льзя. SFX (в батнике)можно не запускать. Закомментируйте красную строку
Кроме того, сейчас закомментирован контроль наличия SFX »Наверное надо доработать в батнике выбор диска после отработки SFX. Список дисков известен, имя папки (у Вас winsoft) известно, проверим наличие на каждом из доступных дисков этой папки и, если она единственная, то и ручной выбор делать не надо - путь ясен.:SeleDisk
SetLocal
Set "SpisD="
Set /A N=1
Set "@@D%N%=A"
FOR /F "usebackq tokens=1 skip=1 delims=:" %%i IN (`"wmic logicaldisk get caption | FINDSTR /R /C:"[A-Z]""`) DO (
If Exist "%%i:\%BoxIn%" (
Call Set /A N+=1
Call Set "@@D%%N%%=%%i"
Call Set "SpisD=%%SpisD%%%%i"
)
)
If %N%==2 (EndLocal &Set "%~1=%@@D2%" &Exit /B 0)
Echo ===========================================================
Echo Select output disk
Echo.
CHOICE /C A%SpisD% /M "%SpisD%-select a drive letter, A-Complete batch file"
If %Errorlevel%==1 Exit /B 3
Call Set "DDD=%%@@D%ErrorLevel%%%"
Echo ===========================================================
EndLocal &Set "%~1=%DDD%"
Exit /B 0
SergioBS
16-01-2020, 14:00
megaloman,
Вы пишите:
"Set "BoxIn=winsoft" -здесь задаётся имя папки, куда распаковывается SFX" - SFX распаковывается в корень раздела (диска) по выбору пользователя... Или я чего-то не понял?
"Батник и SFX-файл должны быть в одной папке" - так, что в итоге запускать пользователю?
megaloman
16-01-2020, 14:53
"Set "BoxIn=winsoft" -здесь задаётся имя папки, куда распаковывается SFX" - SFX распаковывается в корень раздела (диска) по выбору пользователя »Это совершенно справедливо. Однако, как взять в батнике имя папки, которую распаковал SFX? Есть идеи? Если Вы делаете SFX стандартным образом, то Вы это знаете и способны сообщить это батнику, а уж батник либо сам определит диск, либо даст возможность его выбрать.
"Батник и SFX-файл должны быть в одной папке" - так, что в итоге запускать пользователю? »А я откуда знаю? Если SFX после отработки запускает батник, то SFX (в батнике закомментировать запуск SFX). Если батник внутри SFX и появится после распаковки, то не ясно, откуда Вы этот батник будете запускать - диск неизвестен, из работы SFX я его вытянуть не берусь.
Если батник запускает SFX, то ответ очевиден.
Кстати, если SFX способен распаковать батник в %Tmp%, определенный в переменных среды системы, то батник прекрасно можно запустить и оттуда.
Оставил только выбор/определение диска. Можно, конечно, сделать текстовый файл с полными путями без диска, и в батнике сделать его чтение (определение диска всё равно придется оставлять).@Echo Off
cls
Set "Box=winsoft"
Call :SeleDisk "D" ||Exit /B %Errorlevel%
Set "R=%D%:\%Box%\Windows\"
2>nul RD /S /Q "%R%StartIsBack AiO v1.0.17"
2>nul RD /S /Q "%R%StartIsBack AIO v1.0.18"
2>nul RD /S /Q "%R%TeamViewer v15.1.3937"
Set "R=%D%:\%Box%\Антивирусы\"
2>nul RD /S /Q "%R%Windows Firewall Control v6.0.2.0"
2>nul RD /S /Q "%R%Windows Firewall Control v6.1.0.0"
Set "R=%D%:\%Box%\Графика\"
2>nul RD /S /Q "%R%Athentech Perfectly Clear workbench v3.9.0.1710"
2>nul RD /S /Q "%R%Perfectly Clear v3.9.0.1722"
2>nul RD /S /Q "%R%WinSnap v5.1.6"
2>nul RD /S /Q "%R%WinSnap v5.1.7"
Set "R=%D%:\%Box%\Интернет\"
2>nul RD /S /Q "%R%Viber v12.1.0.29"
2>nul RD /S /Q "%R%viber v12.2.0.54"
Set "R=%D%:\%Box%\Мультимедиа\"
2>nul RD /S /Q "%R%EZ CD Audio Converter v9.0.5.1"
2>nul RD /S /Q "%R%EZ CD Audio Converter v9.0.7.1"
2>nul RD /S /Q "%R%MKVToolNix v42.0.0"
2>nul RD /S /Q "%R%VidCoder v5.13"
2>nul RD /S /Q "%R%VidCoder v5.14"
Set "R=%D%:\%Box%\Офис\"
2>nul RD /S /Q "%R%VueScan v9.7.18"
2>nul RD /S /Q "%R%VueScan v9.7.20"
Set "R=%D%:\%Box%\Утилиты\"
2>nul RD /S /Q "%R%PrivaZer v3.0.85"
2>nul RD /S /Q "%R%PrivaZer v3.0.86"
2>nul RD /S /Q "%R%Windows 10 Manager v3.1.9"
2>nul RD /S /Q "%R%Windows 10 Manager v3.2.0"
2>nul RD /S /Q "%R%Z-Info v1.0.18"
2>nul RD /S /Q "%R%z-info v1.0.19"
Exit /B
:SeleDisk
SetLocal
Set "SpisD="
Set /A N=1
Set "@@D%N%=A"
FOR /F "usebackq tokens=1 skip=1 delims=:" %%i IN (`"wmic logicaldisk get caption | FINDSTR /R /C:"[A-Z]""`) DO (
If Exist "%%i:\%Box%" (
Call Set /A N+=1
Call Set "@@D%%N%%=%%i"
Call Set "SpisD=%%SpisD%%%%i"
)
)
If %N%==2 (EndLocal &Set "%~1=%@@D2%" &Exit /B 0)
Echo ===========================================================
Echo Select output disk
Echo.
CHOICE /C A%SpisD% /M "%SpisD%-select a drive letter, A-Complete batch file"
If %Errorlevel%==1 Exit /B 3
Call Set "DDD=%%@@D%ErrorLevel%%%"
Echo ===========================================================
EndLocal &Set "%~1=%DDD%"
Exit /B 0
SergioBS
16-01-2020, 16:58
megaloman,
SFX WinRAR не смог запустить delfolders.bat. работает из корня любого диска, с рабочего стола не работает. Кодировка какая должна быть у bat?
megaloman
16-01-2020, 17:07
Кодировка какая должна быть у bat? »По умолчанию - 866.работает из корня любого диска » Что работает, что значит, не смог запустить?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.