wethlo 0 Geschrieben 22. Februar 2023 Autor Melden Teilen Geschrieben 22. Februar 2023 Das schöne an dem Etikettierdrucker ist, dass er die Etiketten selbstständig druckt und auf der zu verschachtelnden Platte selbst positioniert Vielen Dank für die Hilfeleistung. Werde ich versuchen in das Script einzubauen und die Kommandozeilenargumente suche ich mir natürlich in der Hilfe! Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 22. Februar 2023 Melden Teilen Geschrieben 22. Februar 2023 Moin, Prima. Dann ist es doch gut, dass wir jetzt wissen, was du insgesamt vorhast, so konnten wir (also Olaf ) an der richtigen Stelle ansetzen. Gruß, Nils Zitieren Link zu diesem Kommentar
wethlo 0 Geschrieben 23. Februar 2023 Autor Melden Teilen Geschrieben 23. Februar 2023 Habe eben versucht die von BOfH_666 genannte Zeile in das Script einzubauen. Schaut nun wie folgt aus: $Excel = New-Object -Comobject Excel.Application $Excel.Visible = $true $Dir = "C:\CADLINE\_Einzelteile" $Filepath = ((gci $Dir -recurse | where name -like "*xlsm" | sort LastWriteTime -Descending)[0]).FullName $Workbook = $Excel.Workbooks.Open($Filepath) $Excel.Run("MCStudioExport") $Excel.ActiveWorkbook.Save() $Workbook.Close() $excel.Quit() Set-Location "C:\Program Files\IrfanView" i_view64.exe "$($FilePath.Directory.FullName)*.emf" /convert="$($FilePath.Directory.FullName)*.bmp" [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workBook) [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) Remove-Variable -Name excel Leider spuckt mir die Konsole den Fehler "die Benennung "i_view64.exe" wurde nicht als Name eines Cmlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen sie den Vorgang. Der Pfad ist definitiv richtig... An was könnte das liegen? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 23. Februar 2023 Melden Teilen Geschrieben 23. Februar 2023 (bearbeitet) ok, dann mach ma bitte .\i_view64.exe "$($FilePath.Directory.FullName)*.emf" /convert="$($FilePath.Directory.FullName)*.bmp" Im Zweifel würd ich einfach den vollen Pfad der ausführbaren Datei angeben. ¯\_(ツ)_/¯ Noch ein Tipp: Wenn Du - aus welchem Grund auch immer - in ein spezielles Verzeichnis wechseln möchtest/musst, kannst Du mit "Push-Location -Path ...." in das gewünschte Verzeichnis wechseln und kommst dann mit "Pop-Location" wieder zurück zum ursprünglichen Verzeichnis. bearbeitet 23. Februar 2023 von BOfH_666 Zitieren Link zu diesem Kommentar
wethlo 0 Geschrieben 23. Februar 2023 Autor Melden Teilen Geschrieben 23. Februar 2023 Das mit dem Punkt (.) vorneweg hatte hat leider kein Erfolg. Habe es dann mit C:\Program Files\IrfanView\i_view64_exe versucht (habe den Pfad als Text kopiert), was auch nicht funktionierte. Mit C:\Programme\IrfanView\i_view64_exe hatte ich dann Erfolg. Das Script lief ohne Fehlermeldung durch. Voller Vorfreude habe ich dann in den Ordner geschaut, in dem die Files als bmp abgespeichert werden sollten: Leider keine bmp-Files. Habe dann mal versucht, eine bestimmte immer Ordner angegebene emf-Datei zu konvertieren: Das hat funktioniert. Heißt, da ist leider noch irgend etwas faul Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 23. Februar 2023 Melden Teilen Geschrieben 23. Februar 2023 (bearbeitet) Moin, spontan fällt mir dies auf: i_view64.exe "$($FilePath.Directory.FullName)*.emf" /convert="$($FilePath.Directory.FullName)*.bmp" Das Sternchen vor .bmp dürfte falsch sein. Hier geht es ja nicht um einen Auswahlfilter, sondern um eine konkrete zu schreibende Datei. Da du in dem Fall ja IrfanView aufrufst, solltest du dessen Parameter nutzen. Die IrfanView-Hilfe gibt dir unter "Kommandozeilen-Optionen" und unter "Text/Muster-Optionen" zahlreiche Informationen dazu. ich korrigiere mich. Laut den Beispielen in der Hilfe müsste es doch grundsätzlich gehen. Dann lass dir doch mal die zu konstruierenden Pfade als Text ausgeben, vielleicht ist da ja was falsch: Write-Host "$($FilePath.Directory.FullName)*.emf" Gruß, Nils bearbeitet 23. Februar 2023 von NilsK Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 23. Februar 2023 Melden Teilen Geschrieben 23. Februar 2023 (bearbeitet) Hi, in $FilePath steht bereits die Eigenschaft "FullName", daher gibt es keine Eigenschaften ".Directory.FullName". Ebenfalls würde der "\" am Ende vor dem "*.emf" fehlen. Hier wäre ein Anfang: $Dir = "C:\CADLINE\_Einzelteile" $Filepath = Get-ChildItem -Path $Dir ` -Recurse ` -Filter *.xlsm | Sort-Object LastWriteTime -Descending | Select-Object -First 1 # ... $EMFPath = Join-Path -Path $Filepath.Directory.FullName ` -ChildPath "*.emf" $BMPPath = Join-Path -Path $Filepath.Directory.FullName ` -ChildPath "*.bmp" Gruß Jan bearbeitet 23. Februar 2023 von testperson Zitieren Link zu diesem Kommentar
Beste Lösung BOfH_666 577 Geschrieben 23. Februar 2023 Beste Lösung Melden Teilen Geschrieben 23. Februar 2023 vor 3 Stunden schrieb testperson: in $FilePath steht bereits die Eigenschaft "FullName", daher gibt es keine Eigenschaften ".Directory.FullName". Jan hat Recht. Mein Fehler. Sorry. Ich hatte das ").FullName" beim "Zusammenbauen" des Codes wegegelassen und hatte deshalb noch das intakte Objekt zum Weiterarbeiten zur Verfügung. Hier also nochmal mein Vorschlag komplett, wie er eigentlich funktionieren sollte: $Excel = New-Object -Comobject Excel.Application $Excel.Visible = $true $Dir = 'C:\CADLINE\_Einzelteile' $Filepath = (Get-ChildItem $Dir -recurse | Where-Object name -like "*xlsm" | Sort-Object LastWriteTime -Descending)[0] $Workbook = $Excel.Workbooks.Open($Filepath.FullName) $Excel.Run("MCStudioExport") $Excel.ActiveWorkbook.Save() $Workbook.Close() $excel.Quit() & 'C:\Program Files\IrfanView\i_view64.exe' "$($FilePath.Directory.FullName)\*.emf" /convert="$($FilePath.Directory.FullName)\*.bmp" [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workBook) [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) Remove-Variable -Name excel vor 4 Stunden schrieb wethlo: Mit C:\Programme\IrfanView\i_view64_exe hatte ich dann Erfolg. Das Script lief ohne Fehlermeldung durch. Voller Vorfreude habe ich dann in den Ordner geschaut, in dem die Files als bmp abgespeichert werden sollten: Leider keine bmp-Files. Hmmm ... ich würde dabei auch eine Fehlermeldung erwarten, aber auf der anderen Seite auch nicht, dass es funktioniert. Vielleicht versuchst Du einmal die Kommandozeile "manuell" einzugeben .... also & 'C:\Program Files\IrfanView\i_view64.exe' "C:\CADLINE\_Einzelteile\*.emf" /convert="C:\CADLINE\_Einzelteile\*.bmp" Zitieren Link zu diesem Kommentar
wethlo 0 Geschrieben 23. Februar 2023 Autor Melden Teilen Geschrieben 23. Februar 2023 Vielen lieben Dank für deine Hilfestellung! Mit deiner finalen Änderung läuft nun alles hervorragend durch. Habe noch aus den Einstellungen von IrfanView zwei Einstellungen hinzugefügt, um die EMF's in schwarz-weiße BMP's umzuwandeln. Der Finale Code schaut nun folgendermaßen aus: $Excel = New-Object -Comobject Excel.Application $Excel.Visible = $true $Dir = 'C:\CADLINE\_Einzelteile' $Filepath = (Get-ChildItem $Dir -recurse | Where-Object name -like "*xlsm" | Sort-Object LastWriteTime -Descending)[0] $Workbook = $Excel.Workbooks.Open($Filepath.FullName) $Excel.Run("MCStudioExport") $Excel.ActiveWorkbook.Save() $Workbook.Close() $excel.Quit() & 'C:\Programme\IrfanView\i_view64.exe' "$($FilePath.Directory.FullName)\*.emf" /gray /bpp=1 /convert="$($FilePath.Directory.FullName)\*.bmp" [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workBook) [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) Remove-Variable -Name excel Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 23. Februar 2023 Melden Teilen Geschrieben 23. Februar 2023 vor 5 Minuten schrieb wethlo: läuft nun alles hervorragend durch. ... so haben wir das gern. 2 Zitieren Link zu diesem Kommentar
wethlo 0 Geschrieben 4. März 2023 Autor Melden Teilen Geschrieben 4. März 2023 Jetzt muss ich doch nochmals nachhaken. Mir ist eben noch ein kleiner Bug aufgefallen. Es wird, wenn ein neuer Ordner erstellt wurde die aktuellste Excel-Datei gesucht und die csv-Datei dann exportiert. Leider nimmt er jedoch für die Funktion der Konvertierung von emf ins bmp-Format nicht den gleichen Ordner. Er nimmt den letzten Ordner, in dem die Dateien abgespeichert wurden. Hat hierfür vielleicht jemand eine Lösung? Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 4. März 2023 Melden Teilen Geschrieben 4. März 2023 (bearbeitet) Du gibst doch den "Start-Ordner" oben in Deinem Script explizit an?! Wenn Du einen anderen benutzen möchtest, gibst Du den einfach in der Variablen "$Dir" an. ... oder hab ich wieder was falsch verstanden? bearbeitet 4. März 2023 von BOfH_666 Zitieren Link zu diesem Kommentar
wethlo 0 Geschrieben 4. März 2023 Autor Melden Teilen Geschrieben 4. März 2023 (bearbeitet) Das Skript sucht ja unter C:\CADLINE\_Einzelteile die neueste .xlsm-Datei und aktiviert das darin enthaltene Makro. Ich vermute, dass dieses Feature für .emf-Dateien noch nicht implementiert ist… Prinzipiell soll das genauso gehen wie mit den Excel-Dateien. Den Ordner suchen, in denen die neuesten emf-Dateien drin sind und gut ist… bearbeitet 4. März 2023 von wethlo Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 4. März 2023 Melden Teilen Geschrieben 4. März 2023 vor 24 Minuten schrieb wethlo: Ich vermute, dass dieses Feature für .emf-Dateien noch nicht implementiert ist… Wir brauchen da ja nix vermuten ... im Code wird der Ordner als "Input- und Output-Ordner" für die IrfanView-Kommandozeile benutzt, in dem die aktuellste Excel-Datei gefunden wurde. Im Zweifel kannst Du Dir diesen Ordner auch einfach ausgeben lassen. Einfach z.B. vor der Zeile mit dem IrfanView-Aufruf den Variablen-Inhalt einmal auf der Konsole ausgeben: $($FilePath.Directory.FullName) Wenn Du ein anderes Verhalten erwartest, müsstest Du das im Code entsprechend umsetzen. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.