BOfH_666 577 Geschrieben 14. November 2017 Melden Teilen Geschrieben 14. November 2017 Da Powershell sowieso die neuere, modernere, mächtigere und von Microsoft auch in Zukunft noch unterstützte Technologie ist, würde ich auch empfehlen, Batch endlich in Rente zu schicken und es in reinem Powershell umzusetzen. Zitieren Link zu diesem Kommentar
al3x 11 Geschrieben 14. November 2017 Autor Melden Teilen Geschrieben 14. November 2017 hi Jan, würde ich auch, wenn ich wüsste wie :D *Asche auf mein Haupt* Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 14. November 2017 Melden Teilen Geschrieben 14. November 2017 (bearbeitet) Für Powershell gibt es so irrsinnig viele Quellen im Internet.... , kauf Dir doch einfach ein gutes Buch oder mach einen Online-Kurs. Wenn Du erst mal die Grundlagen drauf hast, erschließt sich der Rest quasi von ganz allein. Ein sehr guter und kostenloser Einstieg könnte das hier sein: https://mva.microsoft.com/en-US/training-courses/getting-started-with-microsoft-powershell-8276 ... und wenn Du mit irgendetwas nicht weiterkommst, hast Du immernoch dieses Forum hier .. und auch noch andere bearbeitet 14. November 2017 von BOfH_666 Zitieren Link zu diesem Kommentar
testperson 1.677 Geschrieben 14. November 2017 Melden Teilen Geschrieben 14. November 2017 Hi, wie umfangreich ist denn der Batch teil bzw. was tut der? Wenn du die Batch hier postest könnte man dir sicherlich das ein und andere Stichwort für die PowerShell dazu geben. Gruß Jan Zitieren Link zu diesem Kommentar
al3x 11 Geschrieben 14. November 2017 Autor Melden Teilen Geschrieben 14. November 2017 hi, also eigentlich nix dramatisches, in einem Ordner liegen .csv und .pdf, ich erstelle eine zip aus allen Dateien und benenne die zip mit dem aktuellen Datum. (->Jetzt soll das Datum aber ja aus einer der csv gelesen und als Dateiname benutzt werden): for /F "Tokens=1-4 delims=." %%i in ('date/t') do set date=%%k%%j%%i if exist "pfad\*.zip" del "pfad\*.zip" zip.exe "pfad\%date%.zip" "pfad\*.csv" "pfad\*.pdf" echo %date% , %time% >> pfad-zu-logfile copy "pfad\%date%.zip" "backuppfad" start outlook.exe /a "pfad\%date.zip%" Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 14. November 2017 Melden Teilen Geschrieben 14. November 2017 (bearbeitet) Da Du nicht spezifiziert hast, aus welcher CSV-Datei das Datum ausgelesen werden soll, hab ich einfach mal den jetzigen Status Quo als Vorlage benutzt. Ich empfinde Powershell-Code immer viel weniger kryptisch als batch und für Leute mit Basis-Englisch-Kentnissen ansatzweise intuitiv. Es könnte also so aussehen: $DatumHeute = Get-Date -Format 'yyyyMMdd' $QuellPfad = 'der Pfad den Du beackern möchtest' $ZipDatei = Join-Path -Path 'Pfad zum Verzeichnis in dem die Zip-Datei landen soll' -ChildPath ($DatumHeute + '.zip') Start-Process -FilePath zip.exe -ArgumentList "$ZipDatei $QuellPfad\*.csv $QuellPfad\*.pdf" Get-Date | Out-File -FilePath 'Log-Datei incl. Pfad' -Append -Encoding utf8 Start-Process -FilePath outlook.exe -ArgumentList "/a $ZipDatei" Mit aktuellem Windows und Powershell (W10 und PS 5) könntest Du Dir das Zip-Tool auch noch sparen. Diese Funktionalität ist inzwischen eingebaut. Es wäre auch möglich die Zip-Datei aus der Powershell heraus zu versenden. Dann kannst Du das Alles per Aufgabenplanung starten und brauchst Dich in Zukunft nicht mehr manuell drum kümmern. Edit: Achja … ganz vergessen: Welche CSV-Datei soll denn dann als Quelle für Dein Datum dienen? … die Erste? … die Letzte? … die Kleinste? … die Größte? .. die Jüngste? … die Älteste? … usw. ;-) Achso … auch noch als zusätzliche Erklärung: Ich bin jetzt mal davon ausgegangen, dass die Zip-Datei auch gleich im Zielverzeichnis erstellt werden kann. Falls das nicht möglich ist, kann man das natürlich auch noch anpassen. bearbeitet 14. November 2017 von BOfH_666 Zitieren Link zu diesem Kommentar
al3x 11 Geschrieben 14. November 2017 Autor Melden Teilen Geschrieben 14. November 2017 Da Du nicht spezifiziert hast, aus welcher CSV-Datei das Datum ausgelesen werden soll, hab ich einfach mal den jetzigen Status Quo als Vorlage benutzt. Ich empfinde Powershell-Code immer viel weniger kryptisch als batch und für Leute mit Basis-Englisch-Kentnissen ansatzweise intuitiv. Es könnte also so aussehen: $DatumHeute = Get-Date -Format 'yyyyMMdd' $QuellPfad = 'der Pfad den Du beackern möchtest' $ZipDatei = Join-Path -Path 'Pfad zum Verzeichnis in dem die Zip-Datei landen soll' -ChildPath ($DatumHeute + '.zip') Get-ChildItem -Path $Pfad -Filter *.zip -File | Remove-Item -Force Start-Process -FilePath zip.exe -ArgumentList "$ZipDatei $QuellPfad\*.csv $QuellPfad\*.pdf" Get-Date | Out-File -FilePath 'Log-Datei incl. Pfad' -Append -Encoding utf8 Start-Process -FilePath outlook.exe -ArgumentList "/a $ZipDatei" Mit aktuellem Windows und Powershell (W10 und PS 5) könntest Du Dir das Zip-Tool auch noch sparen. Diese Funktionalität ist inzwischen eingebaut. Es wäre auch möglich die Zip-Datei aus der Powershell heraus zu versenden. Dann kannst Du das Alles per Aufgabenplanung starten und brauchst Dich in Zukunft nicht mehr manuell drum kümmern. Edit: Achja … ganz vergessen: Welche CSV-Datei soll denn dann als Quelle für Dein Datum dienen? … die Erste? … die Letzte? … die Kleinste? … die Größte? .. die Jüngste? … die Älteste? … usw. ;-) hmmmmm :) das sieht von der Menge ja recht übersichtlich aus. Muss ich mal Testen....jedenfalls vielen Dank für den Input! Welche csv wäre eigentlich egal, da in allen das gleiche Datum drin steht. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 14. November 2017 Melden Teilen Geschrieben 14. November 2017 OK, dann stellen wir das Ganze wieder etwas um und nutzen Dukels Vorschlag … der hatte ja funktioniert … $QuellPfad = 'der Pfad den Du beackern möchtest' $ErsteBeliebigeCSVDatei = Get-ChildItem -Path $QuellPfad -Filter *.csv -File | Select-Object -First 1 | Select-Object -ExpandProperty FullName $Datum = (Get-Content -Path $ErsteBeliebigeCSVDatei)[1].split(';')[16] $ZipDatei = Join-Path -Path 'Pfad zum Verzeichnis in dem die Zip-Datei landen soll' -ChildPath ($Datum + '.zip') Start-Process -FilePath zip.exe -ArgumentList "$ZipDatei $QuellPfad\*.csv $QuellPfad\*.pdf" Get-Date | Out-File -FilePath 'Log-Datei incl. Pfad' -Append -Encoding utf8 Start-Process -FilePath outlook.exe -ArgumentList "/a $ZipDatei" Zitieren Link zu diesem Kommentar
al3x 11 Geschrieben 15. November 2017 Autor Melden Teilen Geschrieben 15. November 2017 Cooolio :jau: Herzlichen Dank, funktioniert! Damit komm ich klar. Werde dann mal bisschen mit rum spielen :thumb1: Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 15. November 2017 Melden Teilen Geschrieben 15. November 2017 Wenn ich Dir was empfehlen dürfte: Tu Dir selbst einen Gefallen und schaff Dir die Grundlagen von Powershell mit einem Buch oder Kurs oder Online-Tutorial drauf - jedenfalls irgendwie geordnet und didaktisch aufbereitet. Mit ein bisschen rumspielen entgehen Dir vermutlich ein paar grundlegende Verfahren und Methoden und das führt eher zu Missverständnissen, Fehlern und Frustration. Ich hatte ja oben schon den MVA-Einstiegs-Kurs verlinkt - hier in diesem Thread findest Du noch ein paar mehr gute Quellen, um mit Powershell anzufangen: Beginner Sites and Tutorials. Zitieren Link zu diesem Kommentar
Beste Lösung al3x 11 Geschrieben 15. November 2017 Autor Beste Lösung Melden Teilen Geschrieben 15. November 2017 Danke dir! 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.