Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Аватара пользователя
v79italya

Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение v79italya »

Приветствую. как можно JS-скриптом или Batом открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения?

на скринах показаны шаги. архив открывается двумя шагами. сначала ПКМ -> 7-Zip -> Открыть архив. затем ПКМ -> Просмотр. нажав Просмотр, жду около минуты(это, наверное, надо учесть, поставив как то паузу) открытие файла. когда файл откроется, нажимаю Правка -> Найти.. ищу . все вместе 3 . только вместо тройки может быть любое число одно-трехзначное. и вот вместо 3(или другого числа) надо поставить 27. причем, когда набираю 27, то опять нужно около минуты ждать(опять надо учесть). потом закрываю файл с сохранением изменений и обновлением файла в архиве. возможно ли это все делать на автомате?

адрес файла и имя файла, наверное, лучше в скрипте указать. сейчас так: C:\red\xyz.iwprj2

сейчас в файле текст укорочен. поэтому будет быстро сохраняться изменения. на самом деле надо около минуты-полторы.
Аватара пользователя
Iska

Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение Iska »

v79italya, можно, но совсем не так, как Вы себе это представляете.



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

Процесс:Проверяем существование файла архива.Проверяем существование архиватора.Проверяем существование искомого файла в архиве.Извлекаем искомый файл из архива во временный каталог.Читаем содержимое искомого файла, осуществляем поиск и замену.Если поиск был успешен — сохраняем новое содержимое в искомый файл, помещаем искомый файл в архив с заменой, удаляем временный каталог с файлом.Поместите в gzip-архив весь искомый файл целиком.
Аватара пользователя
Iska

Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение Iska »

Iska, все это второстепенные категории, да и пункты с четвертого по шестой уж больно притянуты за уши в случае с 7zip. Объясню почему. У данного архиватора предусмотрена возможность вывода в поток (ровно как и чтение из потока). Используя sed в качестве потокового редактора, можно запросто редактировать, скажем, текстовые файлы в архиве без извлечения во временную папку. Представьте, есть у нас некоторый текстовый файл some.txt:



Код:

Код: Выделить всё

regular string
obsolete
regular string

Жмем его, скажем в zip:



Код:

Код: Выделить всё

7za a -mx9 test.zip some.txt

Теперь представим, что в только что пожатом текстовом файле нужно obsolete[/i] заменить на new string. Как мы поступаем:



Код:

Код: Выделить всё

7za x test.zip -so | sed "s/obsolete/new string/Ig" | 7za u test.zip -si
7za d test.zip some.txt
7za rn test.zip test some.txt

Это, конечно, всего лишь схематичный порядок действий, чтобы был ясен сам принцип. Доработать пример напильником можно углубившись в справку 7zip.
Аватара пользователя
Iska

Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение Iska »

Цитата Iska:



1. Знаем

2. Знаем

3. Знаем

4. Знаем
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения




так я уже написал:

1 - C:\red\ или C:\red\xyz.iwprj2

2 - он там один xyz

3 - xyzID>3 , но вместо тройки может быть любое число

4 - C:\Program Files\7-Zip\7z.exe

попробуйте распаковать архив на диск С: . на скринах показано как я делаю это вручную. и хотелось бы также программно.

greg zakharov, а нельзя ли готовое решение?
Аватара пользователя
greg zakharov

Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение greg zakharov »

greg zakharov, это всё, конечно, интересно, но имеет достаточно ограниченную область применения. Как там с кодировками, BOM, концами строк, а?




Цитата v79italya:



попробуйте распаковать архив на диск С: .
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения




Попробуйте выложить архив с полным содержимым xml-файла xyz.




Цитата v79italya:



на скринах показано как я делаю это вручную. и хотелось бы также программно.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения




Я уже написал, что «так же» программно не получится. Как — тоже написал. Другой вариант предложил коллега greg zakharov.
Аватара пользователя
v79italya

Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение v79italya »

greg zakharov, 7zip в поток выводит только потоковые форматы, традиционные .zip, .rar, .7z к ним не относятся. Да и sed я бы не стал советовать - стороннее ПО, да и "вещь в себе" - лучше на PoSh сварганить замену.




Цитата Iska:



Процесс:

Проверяем существование файла архива.

Проверяем существование архиватора.

Проверяем существование искомого файла в архиве.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения




Таких пунктов можно бесконечное число навертеть.

Если их убрать ничего не изменится - о проблеме ОС/интерпретатор сообщит, а "результат" будет тот же.
Аватара пользователя
Iska

Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение Iska »

Цитата Busla:



7zip в поток выводит только потоковые форматы, традиционные .zip, .rar, .7z к ним не относятся.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения




Поясните?!




Цитата Busla:



Если их убрать ничего не изменится - о проблеме ОС/интерпретатор сообщит, а "результат" будет тот же.
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения




Можно, конечно, и так. Но лучше заранее обрабатывать такие ситуации.
Аватара пользователя
Busla

Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение Busla »

Цитата Iska:



архив с полным содержимым xml-файла
Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения




написал Вам в личку.

а там:

Iska превысил(а) максимальный объем сохраненных персональных сообщений и не может получать новые сообщения, пока не удалит часть старых.
Аватара пользователя
v79italya

Re: Любой язык - открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения

Сообщение v79italya »

Iska, и со второго раза не получилось отправить в личку, а на маил не предусмотрено прикрепление файл.

в принципе то же самое, только текста больше. можно и обойтись
Ответить

Вернуться в «Скриптовые языки администрирования Windows»