2017-04-12 1 views
0

J'essaie de compresser toutes les données de vente que nous recevons tous les jours et archiver une fois que nous avons fini de traiter les fichiers et de renommer le fichier zip saletransactions_mmddyyyy.zip. Le script que j'ai essaye de compresser chaque fichier individuel. Comment puis-je changer tous les fichiers dans un fichier zip.zip et d'archiver tous les fichiers dans un dossier spécifié

$srcPath = "\\networkshare\test\sale" 
$destPath = "\\networkshare\test\sale\archive\" 
$ext = Get-ChildItem -Path $srcPath | Where-Object { ($_.Extension -eq ".txt") } 

Set-Alias sz "\\networkshare\test\7z.exe" 

foreach ($file in $ext) { 
    $name = $file.Name 
    $directory = $file.DirectoryName 
    $zipfile = $name.Replace(".txt", ".7z") 
    sz a -t7z "$destPath\$($file.BaseName).zip" $file 
} 

Répondre

0

Sur la dernière ligne de votre code, ici

sz a -t7z "$destPath\$($file.basename).zip" $file 

Dans cette ligne, vous racontez 7Zip d'ajouter un fichier à une archive zip qui doit être le même nom que le fichier vous ajoutez. Cela signifie que le zip de sortie sera toujours le même que le nom du fichier, ce qui explique pourquoi vous obtenez un fichier zip par fichier d'entrée.

Si vous souhaitez plutôt les ajouter à une archive mensuelle, commencez par définir le nom du fichier de sortie quelque part en haut de votre code, comme ceci.

$month = "03_2017" 

Ensuite, changez la dernière ligne à ceci, et vous serez prêt à partir.

7z a -t7z $destPath\$month.zip" $file