This commit is contained in:
Harald G. Mueller 2023-02-15 13:43:15 +01:00
parent e96c6b90e1
commit 1b97c81d7a
2 changed files with 60 additions and 27 deletions

View File

@ -5,15 +5,19 @@
## Dateien und Verzeichnisse anlegen ## Dateien und Verzeichnisse anlegen
Als Lehrer habe den Bedarf, für alle Lernenden einer Klasse Als Lehrer habe ich den Bedarf, für alle Lernenden einer Klasse
dieselben Dateien zur Verfügung zu stellen. dieselben Dateien zur Verfügung zu stellen. Sie können sich
auch vorstellen, Sie müssen für eine Anzahl ihrer Kollegen oder
Mitarbeiter einen Satz von gleichen Dateien bereitstellen.
Es gibt mehrere Klassen. Jede Klasse bekommt ein Verzeichnis. In diesem Beispiel gibt mehrere Klassen. Jede Klasse bekommt ein Verzeichnis.
Alle Lernenden bekommen alle ein eigenes Verzeichniss in der
'eigenen' Klasse. Und in jedem Lernenden-Verzeichnis sollen In diesem Klassenverzeichnis wird für jede Person ein weiteres
die gleichen Dateien zur Verfügung gestellt werden. Verzeichnis angelegt. Das heisst, dass alle Lernenden ein eigenes Verzeichnis bekommen. Und in diesem Lernenden-Verzeichnis sollen
dann die gleichen Dateien zur Verfügung gestellt werden.
### Gesucht ### Gesucht
Es soll nachher eine solche Struktur entstehen: Es soll nachher eine solche Struktur entstehen:
./M122-AP22b ./M122-AP22b
@ -33,14 +37,16 @@ Es soll nachher eine solche Struktur entstehen:
usw. usw.
### Vorbereitung ### Gegeben
Ich bereite mich so vor, dass ich eine Liste mit allen Namen Ich bereite mich so vor, dass ich eine Liste mit allen Namen
aller Lernenden habe. Diese mache ich dann ein eine Datei. Diese aller Lernenden habe, die in einer Datei stehen.
Datei bekommt den Namen (die Abkürzung) der Klasse.
Diese Datei bekommt den Namen (die Abkürzung) der Klasse:
./M122-AP22b.txt ./M122-AP22b.txt
Der Inhalt der M122-AP22b.txt Datei könnte so aussehen: Der Inhalt der M122-AP22b.txt Datei sieht dann so aus:
Amherd Amherd
Baume-Schneider Baume-Schneider
@ -50,26 +56,53 @@ Der Inhalt der M122-AP22b.txt Datei könnte so aussehen:
Parmelin Parmelin
Roesti Roesti
<hr>
### Ihre Aufgabe
Sie sollten grundsätzlich selber versuchen, Ihre eigene
Lösung zu finden. Sie können sich gerne auch mit jemandem
zusammenzutun um zusammen zu forschen, nachzudenken und um
die ersten Schritte gemeinsam zu machen.
Sie haben in den letzten Wochen **bash** gelernt. Die Idee
ist, dass nun mit dieser Skriptsprache die Lösung erarbeiten.
Wenn Sie gefitzt sind, werden Sie vielleicht auch eine
einfachere und schnellere Lösung in **bash** finden.
Damit Sie einmal einen Einblick bekommen, ist hier in der
Folge die gleiche Aufgabe in **PowerShell** programmiert
und Sie sollten Ihre eigene Lösung in **bash** finden.
**_beachten Sie_**
**bash** hat nicht die gleichen Möglichkeiten wie PowerShell.
Manches ist nicht so einfach oder auch ganz anders zu machen.
### Mögliche Strategie für den Programmablauf ### Mögliche Strategie und Lösung in PowerShell
Versuchen Sie alles in **bash** nachzumachen. 1.) Das automatisierte Skript muss zuerst den Dateinamen
Aber Achtung. Manche Dinge kann man oder muss (vor dem Punkt) auslesen um damit das Grundverzeichnis
man in **bash** anders machen. Wenn Sie ganz (das der Klasse) anzulegen.
gefitzt sind, werden Sie auch noch eine
einfachere und schnellere Lösung finden.
2.) Dann muss das Skript die Datei öffnen und alle Namenseinträge
herauslesen.
**Beispiel-Lösung in PS** 3.) Die Namen sind in einer Liste notiert. Die können gleich
Das automatisierte Skript muss jetzt den Dateinamen (vor dem Punkt) als "array" verwendet werden.
auslesen um damit das Grundverzeichnis anzulegen. Dann muss das
Skript die Datei öffnen und alle Namenseinträge lesen. Die Namen
sind in einer Liste, die ich dann als "array" verwenden werde um
mit jedem (Namens-)Eintrag erstens ein Verzeichnis zu erstellen
und zweitens die Dateien aus dem Template dort hinein zu kopieren.
Es gibt Möglichkeiten, die oben beiden Schritte in einem
einzigen Befehl zu machen um gleichzeitig den Inhalt einer
Datei direkt einer Programm-Variablen zuzuweisen und um den
nächsten Schritt gleich damit zu machen.
4.) Mit jedem (Namens-)Eintrag muss man erstens ein
Verzeichnis erstellen und zweitens die Dateien aus dem
"Template"-Verzeichnis hinein zu kopieren.
- [./loesung-in-powershell/einstieg-prepareFiles-01.ps1](./loesung-in-powershell/einstieg-prepareFiles-01.ps1) - [./loesung-in-powershell/einstieg-prepareFiles-01.ps1](./loesung-in-powershell/einstieg-prepareFiles-01.ps1)
- [./loesung-in-powershell/einstieg-prepareFiles-02.ps1](./loesung-in-powershell/einstieg-prepareFiles-02.ps1) - [./loesung-in-powershell/einstieg-prepareFiles-02.ps1](./loesung-in-powershell/einstieg-prepareFiles-02.ps1)

View File

@ -104,11 +104,11 @@ Der "Archiv"-Dateiname soll so aussehen:
Später werden diese obigen Prozesse für kommende Anwenungen Später werden diese obigen Prozesse für kommende Anwenungen
vollautomatisch erstellt werden. Dafür erstellen Sie vollautomatisch erstellt werden. Dafür erstellen Sie
- 1.) ein CronTab-Eintrag (oder Aufgabenplanungs-Task) - 1.) ein CronTab-Eintrag in Linux<br>(oder Aufgabenplanungs-Task bein Windows)
- 2.) ein Mail mit Attachment, - 2.) ein Mail mit Attachment
damit Sie erstens wissen, wann die Generierung der Liste und die Briefe damit Sie wissen, wann die Generierung der Liste und die Briefe
fertig ist. fertig ist und damit die Resultate an den richtigen Ort gelangen.
Das erzeugte Mail brauchen Sie auch, damit Sie die Resultate in einem Das erzeugte Mail brauchen Sie auch, damit Sie die Resultate in einem
ersten Ausbau mal an sich selber schicken und überprüfen können. ersten Ausbau mal an sich selber schicken und überprüfen können.