Получить CRC файла в архиве 7zip программно | |
---|---|
VeterVFP Автор Сообщений: 413 Откуда: Москва Дата регистрации: 26.12.2006 |
Приветствую всех.
В программе использую 7zip для распаковки архивов через консольную 7za.exe. Есть задача получить CRC файла внутри архива 7zip, не распаковывая его. Единственный вариант, который пока пришел в голову - сохранять результат вывода по ключу "l" в файл через перенаправление ">" и его потом парсить.
Но проблема в том, что через API_RunAndWait файл не создается. Хотя, вставив сформированную строку в CMD окно - отрабатывает норм. При этом команда распаковки архива отрабатывает нормально через тот же API_RunAndWait. Где ошибка? Или можно получить CRC без перенаправления в текст файл? |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Программно создайте bat- или cmd-файл с той же строкой, которую вы запускаете через API_RunAndWait. А в API_RunAndWait запускайте этот bat-файл. Есть также хорошие шансы, что достаточно просто добавить cmd /Cв начало вашей строки, то есть строка запуска будет такой: cmd /C 7za.exe и так далее PS Пишу не слишком уверенно, потому что понятия не имею, что такое API_RunAndWait. Но для метода Run объекта WScript.Shell всё написанное выше работает:
Исправлено 5 раз(а). Последнее : akvvohinc, 03.11.22 21:10 |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
VeterVFP Автор Сообщений: 413 Откуда: Москва Дата регистрации: 26.12.2006 |
У меня не сработало. Может из-за экранирования кавычками? Но без них нельзя, т.к. и путь к самому 7zip и к файлу и к папке результата могут, конечно, содержать пробелы. Я поэтому и указал собираемую строку как
|
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Да, у меня с путями, имеющими пробел, вариант с CMD /C тоже не сработал. Но вариант с bat-файлом отработал нормально: Создаю test.bat с требуемой командой (добавил пробелы во все компоненты): STRTOFILE(["c:\Program Files (x86)\7z\7z.exe" l -slt "c:\Program Files (x86)\7z\111 222\arc 111.7z" >"output file.txt"],[test.bat]) а далее: ws = CreateObject('WScript.Shell') ws.Run('test.bat',2,.T.) И на выходе получаю нормальный output file.txt. Исправлено 3 раз(а). Последнее : akvvohinc, 08.11.22 19:21 |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
()
> STRTOFILE(["c:\Program Files (x86)\7z\7z.exe" l -slt "c:\Program Files (x86)\7z\111 222\arc 111.7z" >"output file.txt"],[test.bat]) попытался понять...
Теперь переведу строку фокса (макросами) в читаемое:
не понял про нумерацию строк, как в басике... не обращайте внимания |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:К сожалению, тебе это не удалось: FROM - это просто файл архива, с которым работает архиватор; TO - не существует; "ошибки процесса" - просто стандартный вывод архиватора, в данном случае туда запишется нужная инфа о файлах архива. Цитата:Читаемое, но нерабочее - имена файлов должны быть в кавычках. |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
VeterVFP Автор Сообщений: 413 Откуда: Москва Дата регистрации: 26.12.2006 |
Да, это помогло. Спасибо за идею. Только добавил перевод кодовой страницы в 1251, чтобы рус буквы тоже корректно обрабатывались:
|
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Ааа, это да! А так? STRTOFILE('"&p" l -slt "&f" > "&o"', "test.bat") |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
ssa Сообщений: 12999 Откуда: Москва Дата регистрации: 23.03.2005 |
Собирать строку с помощью макроподстановки - это круть. Да еще и из однобуквенных переменных... ------------------ Лень - это неосознанная мудрость. |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Что (или кто) запрещает?
() на языке однобуквенных переменных построена вся физика и математика Доб. А это читать проще? STRTOFILE(["c:\Program Files (x86)\7z\7z.exe" l -slt "c:\Program Files (x86)\7z\111 222\arc 111.7z" >"output file.txt"],[test.bat]) > Собирать строку с помощью макроподстановки - это круть. Это фокс ФПД так был задуман, мудрыми умами. Причем они сделали даже переменную "m" и "m.m" адекватно "понимаемыми". Писали интерпретатор "фокс" монстры. Исправлено 2 раз(а). Последнее : of63, 10.11.22 20:20 |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:А так стало рабочим, но нечитаемым. Три кавычки подряд только комп разберёт, поэтому я использовал квадратные скобки. Да и использовать в одной команде для одной строки - одинарные кавычки, а для другой - двойные, некомильфо (винегрет). Исправлено 1 раз(а). Последнее : akvvohinc, 10.11.22 20:18 |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
там не три кавычки, я обрамил выражение в одиночные кавычки, и наставил внутри выражения двойных кавычек, как ты заметил. Да, можно квадратные скобки применить вместо одиночных кавычек (фокс "милосерд" ) ) для удобствап наблюдения в шрифте... какой тут... хз
|
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
dimag Сообщений: 464 Откуда: Одинцово Дата регистрации: 17.12.2002 |
Мое мнение лучше использовать
------------------ Глупость - это не отсутствие ума, это такой ум. |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
"В дебагере" - это при подведении мышки к имени переменной высвечивается ТулТипТекст - значение переменной, об этом ?
Это работает и в строке и в строке с использованием макросов (префикс & перед переменной), и в комментарии тоже работает (если в комментарии написать [&& ... m.x] то мы увидим значение переменной X) ... Иногда этот механизм не работает просто (внутри выражения, кмк), независимо от макропрефикса... Доб. Пытался привыкнуть к TEXTMERGE, но количество служебных символов напрягло, и сам вызов ф-ии (TEXTMERGE) указывать надо. А тут один символ - амперсанд, приятно... Доб. Компактность выражений (состоящих из подвыражений) дорогого стОит. в фоксе это сделано хорошо (макроподстановки, и их культивирование на первом использовании фокса). Не для начала войн за старо/ново язы, это уже не важно, важен процесс, преемственность, чтеное старых ошибок, борьба с новыми... генезис... Исправлено 2 раз(а). Последнее : of63, 15.11.22 18:13 |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
dimag Сообщений: 464 Откуда: Одинцово Дата регистрации: 17.12.2002 |
Бывает нужно посмотреть все выражение в целом, очень удобно. [attachment 36437 textm1.PNG] Плюс
------------------ Глупость - это не отсутствие ума, это такой ум. |
Re: Получить CRC файла в архиве 7zip программно | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Плюсанул, про "кому как"
() Бывает нужно посмотреть все выражение в целом Для этого и упрощал, чтобы не видеть все в целом, в дебагере ) Про писание прог (алгоритм, "программный" путь решения задачи - это песня до конца жизни, задачи жизненные, пожизненные ) ) - все подчиненные бывшие и нынешние жалуются, что "заставляют делать не так, как я хочу [это, де, правильно]" (я не сильно заставляю). Не знаю как спорить. Только Насилие, как в школе, "преемственность" (обьяснение своих ошибок, решений, недосказанностей официальной т.з., в т.ч. на этом форуме (хотя наши его не читают)) |
© 2000-2024 Fox Club  |