На жаль, метод пакетної програми afrazier не буде працювати; Windows не обробляє відкриття декількох файлів, як це. Коли ви намагаєтесь відкрити кілька файлів за допомогою програми, Windows не відкриває жодного примірника програми та передає файли у вигляді декількох аргументів цьому одному екземпляру. Натомість Windows відкриває багато екземплярів програми (стільки примірників, скільки є файлів), передаючи один файл кожному екземпляру. Було б добре, якби ви могли просто використовувати% * і передавати купу файлів в один .bat і мати це .bat запустити цикл, обробляючи кожен файл один за одним, але, на жаль, ви можете використовувати лише% 1, встановлюючи ці види дій в реєстрі.
Хтось із деяким часом у своїх руках може написати програму, яка використовує об'єкт mutex, щоб перевірити, чи є вже запущений інший екземпляр, і якщо є, передати його файл цьому екземпляру, а потім закрити, після чого оригінальний екземпляр помістить цей файл у черзі та дістатися до неї, як тільки буде виконано обробку власного файлу. партія може зробити трюк, використовуючи tasklist
і find
теж, але це не так добре рішення, як мютекс.
У будь-якому випадку, спробуйте це для значення вашого реєстру витягних команд, щоб отримати правильну назву папки:
"\path\to\7z.exe" x "%1" -o* -aou
Це створить нову папку в тому самому каталозі, що і архів джерела, з тим самим іменем, що і вихідний архів (без розширення файлу).
Крім того, я додав -aou
перемикач, щоб автоматично уникнути конфліктів імен файлів (7z додасть номер до кінця файлу, а не підкаже, чи хочете ви перезаписати чи інше).
-o*
, але тільки якщо в архіві є більше одного файлу? Як в, чи можу я змусити його витягнути в поточний каталог, якщо в архіві є лише один файл чи папка?