Bonjour,
Je tente de compresser tous les fichiers contenus à partir d'un chemin passé en paramètre et d'un nombre de jeux (les fichiers plus vieux que x jours seront traités)
Ex structure:
Mon soucis intervient lorsque le nom du dossier et le nom du fichier contiennent un espace...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 E:\backup Dossier1 Fichier1.BAK Fichier2.BAK Dossier2 Fichier1.BAK
Voici mon script :
Merci d'avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 # compression selon l'age # Script de compression (parametrable en ligne de commande) # path to 7z.exe $s7zExe = "C:\Program Files\7-Zip\7z.exe" # recuperation parametres $sTargetParam = $args[0] [int]$sAgeParam = $args[1] # age max d'un log en minutes $iAgeMaxLog = 60 # verifier que le repertoire passe en parametre existe if ((Test-Path -path $sTargetParam ) -ne $True ) { write-host "Le repertoire a traiter n'existe pas !" write-host "`nscript <chemin_a_traiter> <duree_retention_en_jours>`n" exit } # tous les fichiers plus vieux que $iAgeMaxEnJour seront supprimes $iAgeMaxEnJours = $sAgeParam # repertoire a purger $sTarget = $sTargetParam + "\*" #date du jour $sdDate = Get-Date $sdDateLim = $sdDate write-host "iagemax... : " $iAgeMaxEnJours $sdDateLim = $sdDate.AddDays(((-1)*$iAgeMaxEnJours)) # log ecrit plus frequemment $sdDateLimLog = $sdDate.AddMinutes((-1) * $iAgeMaxLog) write-host "sdDateLim : " $sdDateLim # .bak : full backups $lFichiersBak = Get-ChildItem $sTarget -Include *.bak -Recurse | Where-Object { $_.LastWriteTime -lt $sdDateLim } # .trn : logs de transaction $lFichiersTrn = Get-ChildItem $sTarget -Include *.trn -Recurse | Where-Object { $_.LastWriteTime -lt $sdDateLimLog } $lListeComplete = $lFichiersBak + $lFichiersTrn # effectuer la purge foreach ($File in $lListeComplete) { $sArchive = "$File" + ".7z" $sNomFichier = "$File" # -and (!(Test-Path $sArchive ) ) if ( ($sNomFichier.length -gt 1 ) -and (!(Test-Path $sArchive ) ) ) { #write-host "$s7zExe a -bd $File.7z $File" write-host write-host "-------------------- $File ------------------" $proc = New-Object System.Diagnostics.Process; $proc.StartInfo.FileName = "$s7zExe"; # parametres de 7zip $proc.StartInfo.Arguments = ("a","-bd",$sArchive,$File); $proc.StartInfo.UseShellExecute = $false; $proc.StartInfo.RedirectStandardOutput = $true; $proc.Start(); Measure-Command { $proc.WaitForExit() } if ( $proc.ExitCode -eq 0 ) { write-host "`ncompression ok (creation $sArchive )" Remove-Item $File } } else { write-host "on passe $sNomFichier" } }
Partager