Malheureusement, la méthode du programme batch afrazier ne fonctionnera pas; Windows ne gère pas l'ouverture de plusieurs fichiers comme ça. Lorsque vous essayez d'ouvrir plusieurs fichiers avec un programme, Windows n'ouvre pas une seule instance du programme et ne transmet pas les fichiers comme plusieurs arguments à cette seule instance. Au lieu de cela, Windows ouvre de nombreuses instances du programme (autant d'instances qu'il y a de fichiers), en passant un fichier à chaque instance. Ce serait bien si vous pouviez simplement utiliser% * et passer un tas de fichiers à un seul .bat, et que ce dernier exécute une boucle en traitant chaque fichier un par un, mais malheureusement vous ne pouvez utiliser que% 1 lorsque vous les définissez types d'actions dans le registre.
Quelqu'un avec un peu de temps à disposition pourrait écrire un programme qui utilise un objet mutex pour vérifier s'il y a une autre instance déjà en cours d'exécution, et si c'est le cas, pour passer son fichier à cette instance puis fermer, sur lequel l'instance d'origine mettra ce fichier dans une file d'attente et y accéder une fois le traitement de son propre fichier terminé. un lot pourrait faire l'affaire en utilisant tasklist
et find
aussi, mais ce n'est pas une bonne solution comme mutex.
Quoi qu'il en soit, essayez ceci pour la valeur de registre de votre commande d'extraction pour obtenir le bon nom de dossier:
"\path\to\7z.exe" x "%1" -o* -aou
Cela va créer un nouveau dossier dans le même répertoire que l'archive source avec le même nom que l'archive source (sans l'extension de fichier).
En outre, j'ai ajouté le -aou
commutateur pour éviter automatiquement les conflits de noms de fichiers (7z ajoutera un nombre à la fin d'un fichier à la place, vous demandant si vous souhaitez remplacer ou autre).
Justin Roettger
la source
-o*
ça, mais seulement s'il y a plus d'un fichier dans l'archive? Comme dans, puis-je le faire extraire dans le répertoire actuel s'il n'y a qu'un seul fichier ou dossier dans l'archive?"C:\Program Files\7-Zip\7zFM.exe" x "%1" -o* -aou
, changez le 7zFM en seulement 7z"C:\Program Files\7-Zip\7z.exe" x "%1" -o* -aou
Ce fil est devenu un peu déroutant en raison de réponses contradictoires (il m'a fallu un certain temps pour déterminer quelle était la bonne solution), j'ai donc pensé que ce serait une bonne idée de résumer les résultats des messages d'Afrazier et de Justin Roettger combinés avec les miens expériences:
HKEY_CLASSES_ROOT\7-Zip.7z
Shell
sous-clé(Default)
valeur sur la chaîneextract
extract
(Default)
valeur de laextract
clé surExtract to Folder
extract
nommécommand
(Default)
valeur de lacommand
clé sur:(vous devrez peut-être ajuster cela pour correspondre au chemin de votre installation 7-Zip)
Au lieu de 7z avec -aou comme Justin Roettger a suggéré que j'ai fini par utiliser 7zG, car de cette façon, vous pouvez choisir d'écraser si vous le souhaitez, tout comme l'extraction avec le menu contextuel normal.
C'est ça! Les fichiers 7z sont maintenant extraits dans un dossier avec leur propre nom par double-clic. Pour d'autres extensions comme .rar et .zip, vous devez répéter ces étapes pour les clés correspondantes. (c'est-à-dire HKEY_CLASSES_ROOT \ 7-Zip.rar et HKEY_CLASSES_ROOT \ 7-Zip.zip et ainsi de suite)
Oh et pour clarifier: cela fonctionne aussi avec plusieurs fichiers sélectionnés. Pas besoin de fichier batch.
la source
C:\Program Files\7-Zip\7zG.exe x "%1" -o*
et voila.Tools -> Options...
menu).La manière simple
Installez ExtractNow . Vous pouvez le configurer pour faire exactement ce que vous voulez.
À la dure
Modification manuelle du registre comme suit ...
Commencez en
regedit
tant qu'administrateurOuvrez
HKCR\.7z
et regardez la(Default)
valeur. Prenez note de ce que c'est (dans mon cas, en tant qu'utilisateur PowerArchiver, c'estPASZIP
)Accédez à la clé de registre
HKCR
nommée que. (dans mon casHKCR\PASZIP
)Sous cette clé, développez la
Shell
sous-cléDéfinissez la
(Default)
valeur sur la chaîneextract
Créez une nouvelle sous-clé nommée
extract
Définissez la
(Default)
valeur de laextract
clé surExtract to Folder
Créez une nouvelle sous-clé sous
extract
nommécommand
Définissez la
(Default)
valeur de lacommand
clé sur(vous devrez peut-être ajuster le chemin)
Merci à Justin Roettger d'avoir indiqué la variable de nom correcte nécessaire pour cela.
Ça devrait être ça. Maintenant, les fichiers 7z sont extraits dans un dossier avec leur propre nom par double-clic. Pour d'autres extensions comme .rar et .zip, vous devez répéter ces étapes pour les clés correspondantes.
Si vous souhaitez uniquement effectuer les modifications sur votre compte d'utilisateur au lieu de l'ensemble du système, modifiez
HKCU\Software\Classes
au lieu deHKCR
.HKCR
est une clé virtuelle qui est une unionHKLM\Software\Classes
etHKCU\Software\Classes
où les données de votre compte (HKCU) remplacent les données à l'échelle du système (HKLM). Normalement, l'exécution de regedit en tant qu'administrateur signifie que la modification de HKCR modifie les données à l'échelle du système dans HKLM.Extraire plusieurs fichiers
Bien sûr, cela ne fonctionnera pas si vous avez sélectionné plusieurs fichiers. Si vous voulez que cela fonctionne, vous devez créer le fichier de commandes suivant:
Maintenant, suivez les instructions ci-dessus. À la toute dernière étape, définissez la
(Default)
valeur de lacommand
clé surC:\Path\To\File.bat %*
Toutes les modifications du Registre n'ont pas été testées de la mémoire, mais devraient être correctes.
la source
%~dpn1
dans les associations de fichiers? (Ce n'est pas le cas dans Windows XP. Vous avez également oublié l'x
extension.)x
dans le nom du dossier de sortie. Quant au fonctionnement ... C'est une bonne question. Je vais modifier pour répondre ..."C:\Program Files\7-Zip\7z.exe" x "%1" -o"%~dpn1"
je n'obtenais aucun avantage de l'exécutioncmd.exe
que je pouvais dire, et l'ouverture par défaut de 7-zip ne le dérangeait pas. Cependant, il s'agit simplement de décompresser%~dpn1
dans le même dossier que le fichier zip. Le\"%1.d\"
donne un sous-répertoire \ filename.zip.d \ dans le même dossier que le fichier zip, il est donc plus proche, mais ne supprime pas l'extension. J'ai essayé des hybrides des deux, pas de chance. D'autres suggestions?Voici le script PowerShell que j'ai écrit sur la base de la réponse de @ haiggoh. Avant de l'exécuter, vous devez ouvrir 7-zip, allez dans Outils-> Options et associer 7-zip aux extensions de fichiers souhaitées. Après cela, exécutez le script PowerShell suivant (avec les droits d'administrateur):
Bien sûr, assurez-vous que cette
$7zInstallationFolder
variable contient le chemin d'accès correct à votre installation 7-zip.la source
Passez des paramètres comme celui-ci:
Je me souviens avoir entendu des plaintes concernant Windows 7 ne permettant pas de modifier directement les actions sur les fichiers. Je ne sais pas si c'est vrai ou pas ... mais si c'est le cas, enregistrez ce qui suit en tant que
*.reg
fichier et importez-le.la source
Voici un fichier .reg qui configure l'extraction vers le dossier comme comportement par défaut lorsque vous double-cliquez sur des fichiers avec l'une des extensions suivantes - 7z / CAB / GZ / GZIP / RAR / TAR / ZIP. Vous pouvez le faire pour d'autres extensions de fichier en utilisant la même approche. Je préfère le comportement par défaut de Windows pour le montage ISO / VHD, donc je n'ai pas changé cela, et 7-Zip prend en charge de nombreux autres types de fichiers que je ne rencontre pas souvent, donc je ne l'ai pas changé pour ceux-ci.
Vous pouvez annuler cela en accédant au gestionnaire de fichiers 7-Zip, aux outils, aux options et modifiez les associations de fichiers comme vous le souhaitez.
J'ai testé sur Windows 10 x64 / 7-Zip 15.12 x64. Parce qu'il utilise C: \ Program Files pour le chemin vers 7-Zip, vous avez certainement besoin de x64 Windows + x64 7-Zip, mais je n'ai testé que sur Windows 10.
Vous aurez les mêmes options de clic droit qu'auparavant, cela ne change que ce qui se passe lorsque vous double-cliquez, et uniquement pour ces sept types de fichiers (encore une fois, vous pouvez le faire pour d'autres types de fichiers en utilisant la même approche).
S'il existe déjà un dossier de ce nom, il vous donnera la même invite 7-Zip que vous obtenez normalement, avec des options pour Oui / Oui pour tout / Renommer automatiquement / Non / Non pour tout.
la source