Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Обновления информации на USB (разделе HDD)

Ответить
Настройки темы
CMD/BAT - Обновления информации на USB (разделе HDD)

Аватара для SergioBS

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: SergioBS
Дата: 13-01-2020
Встал вопрос, как организовать обновления для USB диска (вес 32Gb) - перекачивать все целиком ни каждый захочет...

Рассматриваю вариант:
1. SFX WinRAR, который будет на нужный usb (или раздел HDD, буква у всех своя, самостоятельно указав в корень раздела) - распаковывать каталоги c новыми версиями программ. Но как быть со старыми каталогами? Думаю можно решить этот вопрос bat(cmd) файлом, что бы он удалял каталоги со всем содержимым и списком из разных директорий, после распаковки запускать средствами sfx - bat(cmd) из корня Flash. Но есть как минимум два вопроса... Названия каталогов на русском и пробелы в названиях. Не подумал сразу над структурой диска. Весь софт находится в папке winsoft (в корне диска) в ней рубрики, в ней папки с программами названия которых имеют пробелы.

Пример USB:\winsoft\Графика\WinSnap v5.1.6 - там файлы и возможно каталоги, которые нужно потом удалять, после распаковки новых версий.

Нужна помощь!

-------
Дурак спорит с каждым, умный - с равным, а мудрый - лишь с самим собой


Отправлено: 10:51, 13-01-2020

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата SergioBS:
Состав вижу такой:
1. rean.exe - файл запускает оболочку для использования в среде Windows »
SergioBS, тогда берите какой-нибудь AutoPlay Media Studio, лепите оболочку (интерфейс плюс код на Lua «за кадром»), в которой всё это будет — загрузили текущее обновление, запустили, оно попросило выбрать раздел, проверило, что выбранный раздел действительно содержит то, что должно быть, просканировало этот раздел, вывело список того, что будет обновлено и чем будет обновлено, отметило их, например, флажками в списке. Хочет человек обновлять как есть, по умолчанию — оставляет отметки. Не хочет что-то обновлять — снимает потребные отметки. Затем нажимает Обновить и наслаждается процессом обновления/замены/актуализации.

Отправлено: 16:49, 15-01-2020 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для SergioBS

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
AutoPlay Media Studio - Я не знаком с этой программой, оболочка делалась в другой программе. Кто нибудь здесь может помочь с моим вопросом? Скрипт или маленькая программка разницы нет.

-------
Дурак спорит с каждым, умный - с равным, а мудрый - лишь с самим собой


Отправлено: 17:29, 15-01-2020 | #32


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


SergioBS, я знаком и с другими. Проблема в том, что если нет внутреннего языка, хотя бы мало-мальского — за такие оболочки и браться не стоит, одни только очередные свистоперделки на выходе получатся. В этом отношении AutoPlay Media Studio со своим Lua — хоть что-то более-менее вменяемое, нежели набор рюшечек.

Отправлено: 17:35, 15-01-2020 | #33


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


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 этот выбор будет подсвечен автоматически

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 15-01-2020 в 21:58.


Отправлено: 21:46, 15-01-2020 | #34


Аватара для SergioBS

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, Спасибо, уже понятнее в скрипте. Нужно тестить и общаться.
Наколько я понял upd.bat нельзя просто кинуть в SFX и там его исполнить? На нужном разделе...

-------
Дурак спорит с каждым, умный - с равным, а мудрый - лишь с самим собой


Отправлено: 10:13, 16-01-2020 | #35


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата SergioBS:
нельзя просто кинуть в SFX и там его исполнить? »
Льзя.
Цитата megaloman:
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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 13:33, 16-01-2020 | #36


Аватара для SergioBS

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman,
Вы пишите:
"Set "BoxIn=winsoft" -здесь задаётся имя папки, куда распаковывается SFX" - SFX распаковывается в корень раздела (диска) по выбору пользователя... Или я чего-то не понял?
"Батник и SFX-файл должны быть в одной папке" - так, что в итоге запускать пользователю?

-------
Дурак спорит с каждым, умный - с равным, а мудрый - лишь с самим собой


Последний раз редактировалось SergioBS, 16-01-2020 в 14:13.


Отправлено: 14:00, 16-01-2020 | #37


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата SergioBS:
"Set "BoxIn=winsoft" -здесь задаётся имя папки, куда распаковывается SFX" - SFX распаковывается в корень раздела (диска) по выбору пользователя »
Это совершенно справедливо. Однако, как взять в батнике имя папки, которую распаковал SFX? Есть идеи? Если Вы делаете SFX стандартным образом, то Вы это знаете и способны сообщить это батнику, а уж батник либо сам определит диск, либо даст возможность его выбрать.
Цитата SergioBS:
"Батник и 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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 16-01-2020 в 20:17. Причина: Исправил ошибку: заменил %D%\ на %D%:\


Отправлено: 14:53, 16-01-2020 | #38


Аватара для SergioBS

Новый участник


Сообщения: 45
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman,
SFX WinRAR не смог запустить delfolders.bat. работает из корня любого диска, с рабочего стола не работает. Кодировка какая должна быть у bat?

-------
Дурак спорит с каждым, умный - с равным, а мудрый - лишь с самим собой


Отправлено: 16:58, 16-01-2020 | #39


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата SergioBS:
Кодировка какая должна быть у bat? »
По умолчанию - 866.
Цитата SergioBS:
работает из корня любого диска »
Что работает, что значит, не смог запустить?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 16-01-2020 в 18:09.


Отправлено: 17:07, 16-01-2020 | #40



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Обновления информации на USB (разделе HDD)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] После обновления драйвера Nvidia, место на системном разделе уменьшилось на 6Гб darthvedar Microsoft Windows 7 3 23-09-2014 04:50
Разное - Потеря данных на разделе hdd IDimon Накопители (SSD, HDD, USB Flash) 1 22-05-2012 14:51
Flash - Загрузка из vhd на разделе ext3 (программа для USB) Ilya21 Программное обеспечение Linux и FreeBSD 0 08-03-2012 08:42
HDD - Гарантированно убить носитель информации на HDD. __sa__nya Накопители (SSD, HDD, USB Flash) 27 07-08-2008 15:00
При продолжении установки ошибка обновления информации о разделах на диске Dj-XGT Хочу все знать 21 08-11-2007 05:45




 
Переход