Comment boucler tous les fichiers dans powershell pour compresser chaque fichier à son ancien nom

2

J'essaie de compresser tous les fichiers d'un répertoire mais je n'arrive pas à le faire utiliser le répertoire ou l'ancien nom de fichier. Il doit supprimer l'ancien fichier afin qu'il soit protégé dans le fichier zip.

Voici ce que je suis arrivé jusqu'à présent:

$files = Get-ChildItem "D:\Backuptest\input\*" | 
ForEach ($filename in $files) { 
    $content = Get-Content $_.FullName
    & "C:\Program Files\WinRAR\Rar.exe" a -m0 -hps8Cs7y7RfLjYgYb -k -df $filename.rar
    }
Erik Venema
la source
Il ajoute simplement tous les fichiers de System32 au lieu du répertoire que j'ai fourni. Cependant, l'un des noms est correct. Mais il ne met pas chaque fichier dans son propre fichier .zip
Erik Venema
Merci beaucoup! J'apprécie, c'était exactement ce dont j'avais besoin. Et j'ai un peu appris à s'en servir
Erik Venema

Réponses:

1

PowerShell Rar archiver, chiffrer et supprimer plusieurs fichiers d'un dossier

Avec Powershell et la syntaxe ci-dessous, je ....

  • définissez les variables du répertoire source en haut pour lui indiquer le chemin d' accès à la compression des fichiers , et
  • définissez la variable pour le répertoire de destination en lui indiquant le chemin d' accès aux fichiers rar de l'archive chiffrée ,

cela le rend donc un peu plus explicite qu'il ne l'était avant de dire où les fichiers seront placés avant de les supprimer (sans plus /System32, etc.).

Cette méthode utilise ForEach (méthode) pour obtenir le fichier nom de fichier objet par fichier dans le répertoire source, puis un par un, il crée un nouveau fichier crypté avec le même nom de fichier que le fichier [source] non crypté. ajoutez le .rar à la fin de celui-ci. ( Par exemple, test123.txtsera test123.txt.rarcrypté et ensuite test123.txtsupprimé. )

Je pense que votre problème était soit (1.) que la syntaxe des commandes rar n'était pas correcte, soit (2.) ne pas avoir la destination dans les commandes rar pour l'emplacement de sortie et que cela s'exécutait implicitement à partir de ce répertoire et produisait simplement la sortie.


Script Powershell

$Source      = Get-ChildItem "D:\Backuptest\input"
$Destination = "D:\Backuptest\input"
$RarApp      = "C:\Program Files\WinRAR\Rar.exe" 

ForEach ($files in $Source) { 
    & $RarApp a $($Destination + $files.Name + ".rar") $($files.FullName) -m0 -hps8Cs7y7RfLjYgYb -k -df
    }

Ressources supplémentaires

Pimp Juice IT
la source