Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Назвать архив названием файла (http://forum.oszone.net/showthread.php?t=216231)

айкот 22-09-2011 17:56 1758279

Назвать архив названием файла
 
Добрый день. Батниками пользуюсь не часто по тому буду очень благодарен за всякую предоставленную помощь.
Необходимо создать bat файл который бы архивировал файлы в каталоге а название архива брав из самого файла. Например:

На диске D существует папка 1. В папке лежат 6 файлов: 12.o, 12.r, 12.k, 13.o, 13.r, 13.k
В результате отработки батника необходимо что бы файлы 12.o, 12.r, 12.k были помещены в архив под название 12.arj а файлы 13.o, 13.r, 13.k - 13arj. Заархивированные файлы должны удаляться. Спасибо.

ferget 22-09-2011 18:23 1758294

какой программой пользуетесь для архивации?

айкот 22-09-2011 19:27 1758341

arj32.exe

Iska 22-09-2011 23:51 1758461

Примерно так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sPath=%~1

if defined sPath (
        if exist "%sPath%" (
                for %%i in ("%sPath%\*.*") do "%ProgramFiles%\ARJ32\arj32.exe" a -d -y -e "%%~ni" "%%i"
        ) else (
                echo Path [%sPath%] not found
        )
) else (
        echo Usage: %~nx0 ^<Path^>
)

endlocal
exit /b

Вызов пакетного файла наподобие:
Код:

"E:\Песочница\0079\0001.cmd" "D:\1"
Архивы будут созданы/обновлены в текущем каталоге.

ferget 23-09-2011 00:30 1758477

Цитата:

Цитата Iska
Вызов пакетного файла »

пакует в папке где находится, как ни вызывай

айкот 23-09-2011 01:15 1758484

Спасибо конечно что не спали и пытались мне помочь. НЕ буду отрицать, я не гуру в этом деле как вы, но для меня не понятно где же тут команда на архивацию? :). Но в любом случаи спасибо. Попытаюсь завтра разобраться во всем этом.

ferget 23-09-2011 02:14 1758498

Цитата:

Цитата айкот
где же тут команда на архивацию? »

вот
Код:

for %%i in ("%sPath%\*.*") do "%ProgramFiles%\ARJ32\arj32.exe" a -d -y -e "%%~ni" "%%i"

Iska 23-09-2011 05:28 1758517

ferget, моя вина: я сначала сделал вариант с «pushd/popd», затем нашёл параметр «-e/-e1». У себя и на форуме «pushd/popd» я убрал, а вот путь к маске добавить не только у себя, но и на форуме — запамятовал. Спасибо за замечание.

Я поправил код в #4.

айкот 23-09-2011 17:23 1758884

Ой, спасибо Вам ребята. Все работает, во всем вроде как разобрался.

Спасли меня от ручного архивирование тысячи файлов.


Время: 22:33.

Время: 22:33.
© OSzone.net 2001-