Компьютерный форум 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=243807)

VokaMut 02-10-2012 13:26 1998331

Удаление файлов из архива
 
Здравствуйте.
Возникла проблема, есть код который архивирует папку и помещает этот архив в другую папку:

Код:

@cmdow @ /HID
::@echo off
set SrcPath=D:\Arch\1
set DestPath=D:\Arch
set d=%DATE%
"C:\PROGRA~1\WinRAR\rar.exe" a -m5 -s -y -ep1 -r -ag  "%DestPath%\%d%.rar" "%SrcPath%\*.*"

Но мне нужно, что бы после архивации он удалял в архиве файл 1.txt(к примеру).
Моё решение:

Код:

"C:\PROGRA~1\WinRAR\rar.exe" d -y "%DestPath%\%d%.rar" "\1.txt"
Это естественно не работает.
Как удалить файл из архива? помогите пожалуйста.

И еще вопрос:
Можно ли сделать так, что бы архив имел имя, которое находится в буфере обмена?

Заранее спасибо.

Molchune 02-10-2012 14:09 1998353

ну например вот так вот
Код:

@cmdow @ /HID
::@echo off
set SrcPath=D:\Arch\1
set DestPath=D:\Arch
set d=%DATE%
"C:\PROGRA~1\WinRAR\rar.exe" a -m5 -s -y -ep1 -r -ag -x*1.txt  "%DestPath%\%d%.rar" "%SrcPath%\*.*"


VokaMut 02-10-2012 14:37 1998364

Спасибо, помогло, а , что на счет:
Цитата:

Цитата VokaMut
И еще вопрос:
Можно ли сделать так, что бы архив имел имя, которое находится в буфере обмена? »


Iska 02-10-2012 19:07 1998484

Цитата:

Цитата VokaMut
Можно ли сделать так, что бы архив имел имя, которое находится в буфере обмена? »

Можно:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
        `mshta.exe "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();" 1 ^| more`
) do if not defined sClipboard set sClipboard=%%i

if defined sClipboard echo [%sClipboard%]

endlocal
exit /b 0


VokaMut 02-10-2012 19:45 1998501

Цитата:

Цитата Iska
Можно:
Код:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
`mshta.exe "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();" 1 ^| more`
) do if not defined sClipboard set sClipboard=%%i
if defined sClipboard echo [%sClipboard%]
endlocal
exit /b 0 »

Спасибо, но я пошел по более простому решению с помощью GetChip.exe:
Код:

Chcp 1251
set SrcPath=D:\1
set DestPath=D:\2

getclip.exe>1.txt ::записываем текст из буфера в файл
Set file=1.txt
For /F "usebackq tokens=* delims=" %%i In ("%file%") Do Set body=%%i ::берем переменную из файла

"C:\PROGRA~1\WinRAR\rar.exe" a -m5 -s -y -ep1 -r -x*"123.txt" "%DestPath%\%body%.rar" "%SrcPath%\*.*"

=)

Iska 02-10-2012 21:23 1998598

Цитата:

Цитата VokaMut
но я пошел по более простому решению с помощью GetChip.exe: »

«getclip.exe» — Вы хотели сказать… Да, это более простой, но и более длинный путь. Зачем только делать промежуточное сохранение в файл?! Разве нельзя сразу разбирать вывод утилиты?

VokaMut 02-10-2012 22:34 1998646

Цитата:

Цитата Iska
«getclip.exe» — Вы хотели сказать… Да, это более простой, но и более длинный путь. Зачем только делать промежуточное сохранение в файл?! Разве нельзя сразу разбирать вывод утилиты? »

Для меня проще он потому, что понятно как "дваждыдва", но и ваш код сохранил и закомментировал в том же bat-нике, завтра и с ним поковыряюсь)

VokaMut 03-11-2012 21:00 2018054

Цитата:

Цитата Iska
Цитата VokaMut:
Код:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
 `mshta.exe "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();" 1 ^| more`
) do if not defined sClipboard set sClipboard=%%i
if defined sClipboard echo [%sClipboard%]
endlocal
exit /b 0


Еще такая проблема возникла, при копировании текста с воскл. знаками, они(воскл. знаки) не копируются

Iska 04-11-2012 00:28 2018221

VokaMut, очевидно, что не «не копируются», а не «вставляются»: этот специальный символ имеет особое значение при использовании параметра «enabledelayedexpansion». Та же проблема может быть и с некоторыми другими символами, имеющими специальное назначение для командного процессора. В общем случае эта проблема не решаема: даже если извратиться и поместить их в переменную окружения — всё равно могут быть проблемы в дальнейшем — при её использовании.

Выход — целиком переходить на использование WSH.

duh_s 21-12-2012 13:38 2050336

чтоб не создавать новую тему с таким же названием пишу тут:
в общем есть уже готовые архивы вида 1cyyyy_mm_dd.rar (год, месяц, день)
каким образом удалить из них определенные файлы и папки (сохранив оригинальное название и дату создания файла)? хелп

Iska 21-12-2012 15:54 2050407

А Вы смотрели — WinRAR в принципе умеет такое делать?

duh_s 21-12-2012 16:26 2050430

Цитата:

чтоб не создавать новую тему с таким же названием пишу тут: в общем есть уже готовые архивы вида 1cyyyy_mm_dd.rar (год, месяц, день) каким образом удалить из них определенные файлы и папки (сохранив оригинальное название и дату создания файла)? хелп
Цитата:

А Вы смотрели — WinRAR в принципе умеет такое делать?
можна и на "ты" чай не барине мы ;)

кажись нет...
логика действий наверно такова:
в цикле, в текущей папке (или путь прописываем), берем файл 1cyyyy_mm_dd.rar считывает в переменную1 его имя и в переменную2 его дату создания - они совпадают за исключение приписки "1С", разбираем переменную2 на части (чтоб потом можно было прибавить к mm и dd циферку номера цикла и получить дату mm+1 и dd+1) хотя можно обойтись циклом тока для dd
потом распаковываем во временный каталог наш архив, удаляем мусор, запаковываем обратно с именем переменной1 и с изменением атрибутов файла как в переменной2
как-то так...
поможите реализовать )

Iska 21-12-2012 17:01 2050451

Распаковывать-запаковывать не нужно. WinRAR много лет умеет удалять файлы из архива. Проблема именно с сохранением даты/времени файла. Кстати, зачем?

duh_s 24-12-2012 09:09 2052228

можно и без неё

Iska 24-12-2012 11:03 2052298

duh_s, без сохранения — нет проблем (максимум, что возможно — «-tk» — сохранить исходные дата/время последней модификации архива). Наподобие:
Код:

WinRAR.exe d -tk "E:\Песочница\0218\1c2012_12_21.rar" "user.dd" "bla-bla-bla.txt" "table*.dbf"


Время: 06:05.

Время: 06:05.
© OSzone.net 2001-