Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] RAR.EXE Извлечь архивы из каталога и удалить

Ответить
Настройки темы
CMD/BAT - [решено] RAR.EXE Извлечь архивы из каталога и удалить

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


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

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


Здравствуйте!
Задача: в каталоге FROM лежат файлы типа *.rar;*.zip их надо извлечь в каталог DEST и, при успешном извлечении, удалить исходный архив, иначе оставить архив как есть.
Перелистал все ключи rar.exe и не нашел чем удалить архив после успешного извлечения, может у кого есть идеи?

Пока код такой:
Код: Выделить весь код
@echo off
1>nul chcp 1251
set FROM="D:\!DOWNLOAD!\!!!ZIPRAR!!!\*.*"
set DEST="D:\!разобрать!"
"S:\Program Files\WinRAR\rar.exe" x -d %FROM% %DEST%

Отправлено: 09:38, 02-04-2012

 

Ветеран


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

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


m3nthal, теоретически можно использовать команду «d» для удаления файлов из архива — пустой архив удаляется. Но это не лучший способ. Проще получать код возврата и принимать решение об удалении архива на его основании.

Это:
Код: Выделить весь код
1>nul chcp 1251
лишнее. Просто сохраняйте пакетный файл в кодировке OEM/866.

«rar.exe» не работает (в отличие от «winrar.exe») с архивами любого формата, отличного от «*.rar».

Примерно так:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=E:\Песочница\0133\Source
set sDestFolder=E:\Песочница\0133\Destination

if exist "%sSourceFolder%\." (
	if exist "%sDestFolder%\." (
		for %%i in ("%sSourceFolder%\*.rar" "%sSourceFolder%\*.zip") do (
			<nul set /p sValue=%%i 
			"C:\Program Files\WinRAR\WinRAR.exe" x -y "%%i" "%sDestFolder%\" && (
				<nul set /p sValue=Ok
				del /f /q "%%i" && echo  Deleted|| echo.
			) || echo Error
		)
	) else (
		echo Destination folder [%sDestFolder%] not found
	)
) else (
	echo Source folder [%sSourceFolder%] not found
)

endlocal
exit /b 0


Результат может выглядеть наподобие:
читать дальше »
Код: Выделить весь код
E:\Песочница\0133\Source\0001.rar Ok Deleted
E:\Песочница\0133\Source\0002.rar Ok Deleted
E:\Песочница\0133\Source\0003.rar Error
E:\Песочница\0133\Source\0004.zip Ok Deleted


NB!: одноимённые файлы в каталоге назначения переписываются «поверх» без запросов (параметр «-y» при «WinRar.exe»).
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:23, 02-04-2012 | #2



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

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


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


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

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


Спасибо за ответ.
Поменял переменные на свои папки, сменил кодировку, поменял путь к WinRAR.exe, запускаю и ничего. Папка исходная не пустая.
Не ругается и ничего не пишет.

Как у меня получилось
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=D:\!DOWNLOAD!
set sDestFolder=D:\!разобрать!

if exist "%sSourceFolder%\." (
	if exist "%sDestFolder%\." (
		for %%i in ("%sSourceFolder%\*.rar" "%sSourceFolder%\*.zip") do (
			<nul set /p sValue=%%i 
			"S:\Program Files\WinRAR\WinRAR.exe" x -y "%%i" "%sDestFolder%\" && (
				<nul set /p sValue=Ok
				del /f /q "%%i" && echo  Deleted|| echo.
			) || echo Error
		)
	) else (
		echo Destination folder [%sDestFolder%] not found
	)
) else (
	echo Source folder [%sSourceFolder%] not found
)

endlocal
exit /b 0


Windows 7 стоит. В чем может быть дело?

Отправлено: 16:08, 02-04-2012 | #3


Ветеран


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

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


m3nthal, самым правильным будет — убрать из имён папок на диске восклицательные знаки, чтобы они назывались «D:\DOWNLOAD» и «D:\разобрать». Можете это сделать?
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:16, 02-04-2012 | #4


Аватара для gora

Ушёл из жизни


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

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


Цитата Iska:
самым правильным будет — убрать из имён папок на диске восклицательные знаки »
Я бы добавил:
Взять за правило ни когда не использовать в названиях папок и файлов любых спец. символов! Так Вы сможете уберечь себя от "наступания на грабли", которые сами же и раскладываете.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:25, 02-04-2012 | #5


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


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

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


Убрал вопросы из названия и заработало! Спасибо большое! Как ни приду сюда на форум, всегда помогут, в столь смутное время этот факт очень радует.

Отправлено: 12:16, 03-04-2012 | #6


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


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

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


Iska, подскажите , можно ли модифицировать этот скрипт чтобы и 7z архивы видел?

Отправлено: 07:01, 26-01-2022 | #7


Ветеран


Contributor


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

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


bomiva, Iska 10 дней не проявлялся, беру на себя наглость предложить:
Код: Выделить весь код
@Echo Off
cls
	Set "BoxArc=Z:\Soft_Arc"
	Set Mask="*.rar" "*.Zip" "*.7z"

	Set "OutBox=Z:\Soft_Out" 

	Set Arc="C:\Program Files\WinRAR\WinRar.exe" x -y -ibck

	Pushd "%BoxArc%"||(Echo !!! Folder "%BoxArc%" not found &Pause &Exit /B 2)
	If Not Exist "%OutBox%" (Echo !!! Folder "%OutBox%" not found &Pause &Exit /B 2)

	FOR /F "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D %Mask%`) DO (
		Echo "%BoxArc%\%%f"
		%Arc% "%BoxArc%\%%f" "%OutBox%\" &&(Del "%BoxArc%\%%f" &&Echo           "%BoxArc%\%%f" deleted)
	)

	Popd
pause
Exit /B
Примечание: этот вариант кода не ломается от присутствия "!" в именах, например:
Set "BoxArc=Z:\!!! Soft_Arc !!!"
Set "OutBox=Z:\!!! Soft_Out !!!"

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


Последний раз редактировалось megaloman, 27-01-2022 в 00:24.


Отправлено: 16:03, 26-01-2022 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] RAR.EXE Извлечь архивы из каталога и удалить

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - удалить файлы по маске из каталога Gablik Скриптовые языки администрирования Windows 15 04-09-2012 16:23
Мультимедиа - Dziobas RAR Player (RAR Movie Player) yurfed Программное обеспечение Windows 7 26-03-2009 04:26
Запрет на скачивание exe, rar файлов Solitude Microsoft Windows NT/2000/2003 4 11-12-2008 17:12
[решено] как извлечь CD .. тоесть нужен скрипт или EXE который при запуске извлекал бы CD nattropin_new Автоматическая установка Windows 2000/XP/2003 9 24-03-2007 23:57
Alcohol 120% 1.9.5.4327 - как из exe извлечь msi файл ? AlexKan Автоматическая установка приложений 4 29-11-2006 04:32




 
Переход