Zum Inhalt wechseln


Foto

Datumsfeld aus csv auslesen


  • Bitte melde dich an um zu Antworten
25 Antworten in diesem Thema

#16 BOfH_666

BOfH_666

    Junior Member

  • 144 Beiträge

 

Geschrieben 14. November 2017 - 06:56

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.


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#17 al3x

al3x

    Junior Member

  • 164 Beiträge

 

Geschrieben 14. November 2017 - 06:56

hi Jan, würde ich auch, wenn ich wüsste wie :D *Asche auf mein Haupt* ​



#18 BOfH_666

BOfH_666

    Junior Member

  • 144 Beiträge

 

Geschrieben 14. November 2017 - 07:12

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.microsof...powershell-8276

 

... und wenn Du mit irgendetwas nicht weiterkommst, hast Du immernoch dieses Forum hier .. und auch noch andere


Bearbeitet von BOfH_666, 14. November 2017 - 07:40.

live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#19 testperson

testperson

    Board Veteran

  • 4.578 Beiträge

 

Geschrieben 14. November 2017 - 07:35

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


Good morning, that's a nice TNETENNBA!

#20 al3x

al3x

    Junior Member

  • 164 Beiträge

 

Geschrieben 14. November 2017 - 12:30

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%"



#21 BOfH_666

BOfH_666

    Junior Member

  • 144 Beiträge

 

Geschrieben 14. November 2017 - 15:04

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 von BOfH_666, 14. November 2017 - 15:13.

live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#22 al3x

al3x

    Junior Member

  • 164 Beiträge

 

Geschrieben 14. November 2017 - 15:12

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.



#23 BOfH_666

BOfH_666

    Junior Member

  • 144 Beiträge

 

Geschrieben 14. November 2017 - 16:55

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"

live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#24 al3x

al3x

    Junior Member

  • 164 Beiträge

 

Geschrieben 15. November 2017 - 09:51

Cooolio :jau:

 

Herzlichen Dank, funktioniert! Damit komm ich klar. Werde dann mal bisschen mit rum spielen :thumb1: ​



#25 BOfH_666

BOfH_666

    Junior Member

  • 144 Beiträge

 

Geschrieben 15. November 2017 - 11:25

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.


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#26 al3x

al3x

    Junior Member

  • 164 Beiträge

 

Geschrieben 15. November 2017 - 12:31   Lösung

Danke dir!