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

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

Ответить
Настройки темы
CMD/BAT - [решено] скрипт добавляющий папку с содержимым в архив

Пользователь


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

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


У меня есть скрипт:

Код: Выделить весь код
@Echo Off

Set "Where=d:\instal\111\"
Set "To=d:\instal\222\"
Set "Pass=1"
Set "Ext=rar"

Set "Arc=%ProgramFiles%\WinRAR\WinRar.exe"
Set "Keys=a -r -p%Pass% -df -ep1"

FOR /F "usebackq delims=" %%i IN (`Dir "%Where%" /B /A:D`) DO (
   "%Arc%" %Keys% "%To%\%%i.%Ext%" "%Where%\%%i"
)
Он добавляет папку с содержимым в архив, все хорошо. Но приходится каждый рас писать какую папку
d:\instal\111\

И куда сохранить готовый архив
d:\instal\222\

Как сделать так что бы папку "111" добавить в архив. Сам мархив что бы был там же где и сама папка в "d:\instal\"

Например будет в "d:\instal\" папки "111", "222", "333", "444" запистил скрипт ничего не меняя в нем и получил "111.rar", "222.rar", "333.rar", "444.rar" если будет нужно переместил скрипт в другую папку за пустил и получил архивы тех папок что лежат в ней не меняя скрипта.

Отправлено: 17:27, 28-06-2015

 

Ветеран


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

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


Для начала наверно правильнее использовать консольный вариант винрара.

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 02:08, 29-06-2015 | #2



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

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


Ветеран


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

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


Цитата Опиум:
Для начала наверно правильнее использовать консольный вариант винрара. »
В данном случае — без разницы. А вот что действительно неправильно, так вот это:
Цитата infoman1@vk:
переместил скрипт в другую папку за пустил »
Правильно — указывать путь к целевой папке параметром пакетного файла.

Как-то так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
	if exist "%sSourceFolder%\." (
		set "sPassword=1"
		set sSelection=
		
		for /d %%i in ("%sSourceFolder%\*.*") do (
			start /wait "" "WinRAR.exe" a -r -p!sPassword! -df -ep1 "%sSourceFolder%\%%~nxi.rar" "%%~i"
			if not defined sSelection set sSelection="%sSourceFolder%\%%~nxi.rar"
		)
		
		start "" "explorer.exe" /e,/select,!sSelection!
	) else (
		echo Can't find source folder [%sSourceFolder%].
		exit /b 2
	)
) else (
	echo Usage: %~nx0 ^<Source folder^>
	exit /b 1
)

endlocal
exit /b 0

Также можно просто перетащить целевую папку в Проводнике на пакетный файл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:13, 29-06-2015 | #3


Пользователь


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

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


Цитата Опиум:
Для начала наверно правильнее использовать консольный вариант винрара. »
Тот скрипт что я дал для примера полностью рабочий. Но в нем приходится каждый рас писать какую папку архивировать.
Код: Выделить весь код
Set "Where=d:\instal\111\"
А у меня бывают ситуации когда нужно закинуть в винрар много папок
d:\instal\111\
d:\instal\222\
d:\instal\333\
d:\instal\444\
Так мне нужен такой скрипт что бы он у меня лежал в папке к примеру d:\instal\ я его запустил и все подпапки с содержимым стали архивам. "111.rar", "222.rar", "333.rar", "444.rar"

Цитата Iska:
Цитата infoman1@vk:
переместил скрипт в другую папку за пустил »
Правильно — указывать путь к целевой папке параметром пакетного файла. »
А скрипт сам не может смотреть в какой он папке? и добавлять в архив все подпаки с содержимым. Я не хочу указывать путь к целевой папке. Так что бы скрипт работал во всех нужных папках. И d:\instal\ и d:\prog\ и d:\bin\

Отправлено: 21:56, 03-07-2015 | #4


Ветеран


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

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


Цитата infoman1@vk:
А скрипт сам не может смотреть в какой он папке? и добавлять… »
infoman1@vk, я написал, как правильно. Неправильно — таскать пакетный файл туда-сюда по папкам. Абсолютно неправильно. От слова «совсем». Коллега, чем раньше Вы это поймёте и освоите корректный метод, тем лучше будет для Вас же в дальнейшем.

Если Вам так не нравится перетаскивать папку на пакетный файл — Вы можете:
  • добавить ярлык на пакетный файл в «%UserProfile%\SendTo» (Windows XP)/«%UserProfile%\AppData\Roaming\Microsoft\Windows\SendTo» (Vista и выше) и пользовать команду «Отправить» контекстного меню папки;
  • добавить ярлык на пакетный файл на Рабочий стол и перетаскивать папку на него;
  • добавить ярлык на пакетный файл на панель быстрого запуска и перетаскивать папку на этот ярлык.
Наконец, Вы можете взять сторонний файловый менеджер (я лично пользую консольный Far Manager) и добавлять путь параметром пакетного файла одной комбинацией клавиш.

Отправлено: 23:01, 03-07-2015 | #5


Пользователь


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

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


Цитата Iska: Неправильно — таскать пакетный файл туда-сюда по папкам. Абсолютно неправильно. От слова «совсем». Коллега, чем раньше Вы это поймёте и освоите корректный метод, тем лучше будет для Вас же в дальнейшем. »
А вот ето скрипт можно таскать по папкам и не нужно указывать путь.
Код: Выделить весь код
set ext=*.exe, *.msi
set pass="1"

cd /d %dir%
for /f "delims=" %%i in ('
 dir /a-d/b/s %ext% 2^>nul
') do (
 "%PROGRAMFILES%\WinRAR\Rar.exe" a -y -k -ri15 -ep -df -m5 -inul -p%pass% "%%~dpni.rar" "%%i"
 )

exit /b

Последний раз редактировалось infoman1@vk, 04-07-2015 в 11:19.


Отправлено: 11:12, 04-07-2015 | #6


Ветеран


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

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


«Мышки плакали, кололись, но продолжали жрать кактус». Ну «/s»-то нахрена зачем там?!

Отправлено: 12:33, 04-07-2015 | #7


Пользователь


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

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


Цитата Iska:
Как-то так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=%~1
if defined sSourceFolder (
if exist "%sSourceFolder%\." (
set "sPassword=1"
set sSelection=
for /d %%i in ("%sSourceFolder%\*.*") do (
start /wait "" "WinRAR.exe" a -r -p!sPassword! -df -ep1 "%sSourceFolder%\%%~nxi.rar" "%%~i"
if not defined sSelection set sSelection="%sSourceFolder%\%%~nxi.rar"
)
start "" "explorer.exe" /e,/select,!sSelection!
) else (
echo Can't find source folder [%sSourceFolder%].
exit /b 2
)
) else (
echo Usage: %~nx0 ^<Source folder^>
exit /b 1
)
endlocal
exit /b 0
Также можно просто перетащить целевую папку в Проводнике на пакетный файл. »

Спасибо помогло

Отправлено: 17:40, 04-07-2015 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] bat Добавляет в архив и ставит пароь, скрипт уже готов чуточку переделать infoman1@vk Скриптовые языки администрирования Windows 11 27-08-2017 14:03
CMD/BAT - [решено] Как папку с файлами закинуть в архив ilya161 Скриптовые языки администрирования Windows 2 10-04-2015 03:39
WMI - скрипт, создающий нового пользователя, группу, и добавляющий пользователя в группу Niaoppla Скриптовые языки администрирования Windows 7 11-01-2012 19:34
CMD/BAT - [решено] архив-копирование файлов в папку-запуск исполняемого. cher Скриптовые языки администрирования Windows 11 12-06-2011 11:42
Lua-скрипт для SciTE добавляющий заголовок к функции (UDF) Creat0R AutoIt 5 30-05-2009 16:34




 
Переход