Voici l’emballeur Zip interne de Total Commander:
Cependant, je souhaite utiliser mon packer 7Zip. Lorsque je sélectionne 5 fichiers, je reçois 5 archives .Zip distinctes pour chaque fichier sélectionné. Comment est-ce que je fais cela dans 7zip?
Je ne suis pas sûr que vous puissiez faire ce que vous suggérez en utilisant l'interface utilisateur graphique, mais vous pouvez certainement utiliser la ligne de commande:
FOR %i IN (*.*) DO 7z.exe a "%~ni.7z" "%i"
Vous devez d'abord modifier le répertoire (la commande cd
) par le répertoire F:\Downloads
, ou le répertoire de votre choix pour effectuer la compression en masse. En outre, il est assez facile de remplacer par * .exe ou l’extension que vous souhaitez filtrer pour simplement compresser ces documents.
Et le décodeur secret sonne:
%i
est une variable qui contient le nom du fichier pour chaque étape de la boucle.(*.*)
est le critère de sélection, il pourrait facilement être * .exe ou similaire7z.exe
est la version en ligne de commande de 7-Zip%~ni
- ceci étend la variable% i uniquement au nom du fichier - sans extensionSi vous vouliez simplement ajouter les dossiers d'un répertoire donné, la commande est un peu plus complexe, car par défaut, FOR ne fonctionne qu'avec des fichiers. Nous devons lui donner quelques informations supplémentaires:
FOR /F "usebackq delims=?" %i IN (`DIR /B /A:D`) DO 7z.exe a "%i.7z" "%i"
Cela fonctionne à cause de quelques morceaux de ce qui semble magique:
/F
indique à FOR de parcourir la valeur développée entre ()usebackq
indique à FOR que je vais passer une commande et utiliser le résultat pour itérerdelims=?
indique à FOR que je souhaite séparer les jetons du ?
, un caractère illégal dans les noms de fichiers et les répertoires. Je veux seulement un jeton./B
dans DIR
est pour le format nu - juste le nom/A:D
dans DIR
sert à restreindre les résultats par attribut, le D à des répertoiresSi vous souhaitez encapsuler ceci dans un fichier de commandes, la seule modification à apporter consiste à double échapper à la variable% i:
FOR %%i IN (*.*) DO 7z.exe a "%%~ni.7z" "%%i"
J'aime la réponse de Goyuix. Toutefois, si vous utilisez Windows 7 (ou que Power Shell est installé) et utilisez également la version en ligne de commande de 7-Zip, 7za.exe, vous pouvez exécuter cette commande:
dir | ForEach-Object { & "7za.exe" a $_.BaseName $_.Name }
Vous pouvez également remplacer "dir" par "dir * .exe" pour ne sélectionner que les fichiers exécutables.
Une bonne chose à propos de Power Shell est que vous travaillez avec des objets plutôt que des chaînes. Vous pourriez donc être très spécifique si vous le souhaitiez. Par exemple:
dir *.csv | ? { $_.Length -lt 18900 -and $_.LastWriteTime -ge [DateTime] "07/01/2011" } | ForEach-Object { & "7za.exe" a $_.BaseName $_.Name }
Cela n'inclura que les fichiers qui:
EDIT Si vous voulez des fichiers Zip au lieu de 7 Zip, utilisez le fichier Zip.exe d'InfoZip . au lieu.
Vous pouvez télécharger et installer le plug-in 7Zip pour Total Commander à partir de http://www.ghisler.com/plugins.htm Une fois que vous le faites à droite il y aura une autre sélection pour la compression 7Zip de la fenêtre de votre capture d'écran. Avec cette option, vous pouvez accomplir exactement ce que vous demandez.