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:
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
Mon soucis intervient lorsque le nom du dossier et le nom du fichier contiennent un espace...

Voici mon script :
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"
   }
}
Merci d'avance pour votre aide