открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения
Приветствую. как можно JS-скриптом или Batом открыть файл-архив, используя 7-ZIP, изменить текст и закрыть файл,сохранив изменения?
на скринах показаны шаги. архив открывается двумя шагами. сначала ПКМ -> 7-Zip -> Открыть архив. затем ПКМ -> Просмотр. нажав Просмотр, жду около минуты(это, наверное, надо учесть, поставив как то паузу) открытие файла. когда файл откроется, нажимаю Правка -> Найти.. ищу </xyzID> . все вместе <xyzID>3</xyzID> . только вместо тройки может быть любое число одно-трехзначное. и вот вместо 3(или другого числа) надо поставить 27. причем, когда набираю 27, то опять нужно около минуты ждать(опять надо учесть). потом закрываю файл с сохранением изменений и обновлением файла в архиве. возможно ли это все делать на автомате? адрес файла и имя файла, наверное, лучше в скрипте указать. сейчас так: C:\red\xyz.iwprj2 сейчас в файле текст укорочен. поэтому будет быстро сохраняться изменения. на самом деле надо около минуты-полторы. |
v79italya, можно, но совсем не так, как Вы себе это представляете.
Исходные данные:
Процесс:
|
Iska, все это второстепенные категории, да и пункты с четвертого по шестой уж больно притянуты за уши в случае с 7zip. Объясню почему. У данного архиватора предусмотрена возможность вывода в поток (ровно как и чтение из потока). Используя sed в качестве потокового редактора, можно запросто редактировать, скажем, текстовые файлы в архиве без извлечения во временную папку. Представьте, есть у нас некоторый текстовый файл some.txt:
Код:
regular string Код:
7za a -mx9 test.zip some.txt Код:
7za x test.zip -so | sed "s/obsolete/new string/Ig" | 7za u test.zip -si |
Цитата:
1 - C:\red\ или C:\red\xyz.iwprj2 2 - он там один xyz 3 - xyzID>3</xyzID> , но вместо тройки может быть любое число 4 - C:\Program Files\7-Zip\7z.exe попробуйте распаковать архив на диск С: . на скринах показано как я делаю это вручную. и хотелось бы также программно. greg zakharov, а нельзя ли готовое решение? |
greg zakharov, это всё, конечно, интересно, но имеет достаточно ограниченную область применения. Как там с кодировками, BOM, концами строк, а?
Цитата:
Цитата:
|
greg zakharov, 7zip в поток выводит только потоковые форматы, традиционные .zip, .rar, .7z к ним не относятся. Да и sed я бы не стал советовать - стороннее ПО, да и "вещь в себе" - лучше на PoSh сварганить замену.
Цитата:
Если их убрать ничего не изменится - о проблеме ОС/интерпретатор сообщит, а "результат" будет тот же. |
Цитата:
Цитата:
|
Цитата:
а там: Iska превысил(а) максимальный объем сохраненных персональных сообщений и не может получать новые сообщения, пока не удалит часть старых. |
Цитата:
|
Iska, и со второго раза не получилось отправить в личку, а на маил не предусмотрено прикрепление файл.
в принципе то же самое, только текста больше. можно и обойтись |
Цитата:
Цитата:
|
не получается отправить тестовое письмо. да и не надо наверное.
смотрите, в теме часть файла изменена. если бы не изменил. то тема была бы с нарушением правил. давайте использовать файл из темы. дальше я сам подгоню решение. если смогу конешно |
|
Iska, отправил оригинал
|
Цитата:
для них возможно выдавать в stdout Цитата:
Цитата:
а ваша обработка в стиле вместо ошибки (с ошибочным кодом возврата) написать красный текст с нормальным кодом завершения - это медвежья услуга |
Цитата:
Цитата:
Цитата:
|
С sed'ом работает и bom-метку сохраняет, но через временный файл только
Код:
7z x -tgzip xyz.iwprj2 -so | sed "s/\(<xyzID>\)[0-9]\{1,\}\(<\/xyzID>\)/\127\2/ig" >tempfile.tmp & 7z u -tgzip xyz.iwprj2 -sixyz <tempfile.tmp & del /f tempfile.tmp |
Цитата:
даже если в вашем случае это сработало - это называется deprecated - не нужно ориентироваться на такое поведение, чтобы потом не было больно |
Цитата:
|
Цитата:
где я писал про устаревшую фичу? :o Я привёл конкретную цитату из инструкции к последнему стабильному релизу. Цитата:
ну и где брать архиватор - понятно, а где брать sed - нет |
v79italya, пробуйте (на PowerShell):
Скрытый текст
Код:
$sArchiveFile = 'C:\Мои проекты\0272\project.iwprj2' Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Iska, Ваш код работает! работает просто сказка! еще работает пол-секунды. и не поймешь - запустился или не запустился скрипт. проверяю файл - есть изменения. все супер. Спасибо Вам большое!
Sham, Ваш код не знаю как запустить. какой программой? я про Power Shell пол-часа гуглил перед запуском. так то, вопрос решен. |
Цитата:
Скрытый текст
Код:
$sArchiveFile = 'C:\Мои проекты\0272\project.iwprj2' |
Цитата:
а потом я сохранил в файл.ps1 и все. запускаю ПКМ Выполнить с помощью PowerShell, появляется окно cmd и как закроется, значить, скрипт сработал. Iska, ничего менять не буду. все отлично. спасибо Вам |
|
Цитата:
|
Время: 08:33. |
Время: 08:33.
© OSzone.net 2001-