Bonjour à tous,

J'utilise Powershell pour lancer une boucle résolvant 20 fois un modèle d'optimisation Cplex de "facility location" avec 20 jeux de données différents (20 fichiers .dat donc). Etant débutant avec Powershell, j'utilise pour l'instant une solution que l'on m'a fournie et qui enregistre les résultats en fichiers .log. Malheureusement Notepad n'est pas très pratique pour analyser et manipuler les résultats. J'aimerai donc enregistrer ces résultats dans des fichiers Excel.

Voici mon script Powershell actuel:

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
$user = [Environment]::UserName
$date = Get-Date -f "dd-MM-yyyy"

Write-Output ("Bonjour " + $user + " ! " + $date)

# lancement successif d'oplrun
#Invoke-Item oplrun

$nbDats = 20


$CMD = 'C:\Program Files\IBM\ILOG\CPLEX_Studio125\opl\bin\x64_win64\oplrun.exe'
$modFile = 'O:\Cplex workspace\Classic Model\Classic Model.mod'
#$compile = '-e compiledOutput.lp'


for($i=1 ; $i -le $nbDats; $i++){
  $path = 'O:\R-workspace\Classic\'
  $datFile = 'O:\R-workspace\Classic\' + 'Classic_' + $i + '.dat'
  $outputFile = 'O:\R-workspace\Classic\' + 'Classic_' + $i + '.log'
  & $CMD $modFile $datFile | Out-File $outputFile
  notepad $outputFile
}
J'ai essayé simplement de remplacer le .log par .csv mais cela enregistre tous mes résultats dans la première colonne.
Idéalement, j'aimerai générer 20 feuilles de résultats dans un fichier excel unique.

J'ai quelque peu cherché et j'ai trouvé des informations du genre:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
$Excel = New-Object -ComObject "Excel.Application"

$WorkBook = $Excel.Workbooks.Add()

$WorkSheet = $WorkBook.WorkSheets.Add()
$WorkSheet.Name = " xxx ”
$WorkSheet.Select()

$WorkSheet.Cells.Item(1,1) = " yyy "

$WorkBook.SaveAs(" zzz ")
$Excel.Visible = $true
Malgré celà, je n'ai vraiment aucune d'idée de la manière d'implémenter celà à mon script initial.

Je vous remercie d'avance pour votre attention.