Shell Script. Ordner einlesen und in dritter Spalte einfügen.
Hallo zusammen.
Ich habe folgende Aufgabenstellung zu lösen und bin für jede Hilfe dankbar.
In einem Unterordner des aufrufenden Scripts namens doku sollen alle Namen der anwesenden Dateien erfasst werden und eine natürliche menschlich orientierte nummerische Ordnung sichergestellt sein.
Die Namen haben ein Präfix vor der laufenden Nummer mit anschließender Typbezeichnung, also z.B.: a102.txt
Das ist wichtig, weil die laufenden Nummern in der Dateienbezeichnung korrespondieren mit den Zeilen der nächsten Aufgabe.
Die nächste Aufgabe:
In dem selben Ordner des ausführenden Scripts befindet sich eine Datei namens test.
In dieser Datei test befinden sich Datensätze, die durch # getrennt sind.
Also jede Zeile ist als ein Datensatz zu betrachten. Z.B.:
data1#data2#data3#data4#usw
Die Anzahl der Zeilen in der Datei ist beliebig.
Jetzt soll der erste Name der im ersten Schritt festgestellten Dateien des Unterordners
in den ersten Datensatz der Datei test eingefügt werden
anstelle des bisherigen x-ten Teil des ersten Datensatzes.
Also angenommen, der erste Name der ersten Datei des Unterordners hieße a1.txt
und der x-te Teil ist als 3 definiert über eine Variable,
würde das gewünschte Ergebnis so aussehen:
data1#data2#a1.txt#data4
data1#data2#a2.txt#data4
data1#data2#a3.txt#data4
data1#data2#a4.txt#data4
so das das 3.Feld des Datensatzes den Namen der Dateien des Unterordners darstellt.
Leider kann ich mit meinen Fähigkeiten die Aufgabe nicht umsetzen, so das ich hier um Hilfe nachfrage.
Gruß
Fraenky
Ich habe folgende Aufgabenstellung zu lösen und bin für jede Hilfe dankbar.
In einem Unterordner des aufrufenden Scripts namens doku sollen alle Namen der anwesenden Dateien erfasst werden und eine natürliche menschlich orientierte nummerische Ordnung sichergestellt sein.
Die Namen haben ein Präfix vor der laufenden Nummer mit anschließender Typbezeichnung, also z.B.: a102.txt
Das ist wichtig, weil die laufenden Nummern in der Dateienbezeichnung korrespondieren mit den Zeilen der nächsten Aufgabe.
Die nächste Aufgabe:
In dem selben Ordner des ausführenden Scripts befindet sich eine Datei namens test.
In dieser Datei test befinden sich Datensätze, die durch # getrennt sind.
Also jede Zeile ist als ein Datensatz zu betrachten. Z.B.:
data1#data2#data3#data4#usw
Die Anzahl der Zeilen in der Datei ist beliebig.
Jetzt soll der erste Name der im ersten Schritt festgestellten Dateien des Unterordners
in den ersten Datensatz der Datei test eingefügt werden
anstelle des bisherigen x-ten Teil des ersten Datensatzes.
Also angenommen, der erste Name der ersten Datei des Unterordners hieße a1.txt
und der x-te Teil ist als 3 definiert über eine Variable,
würde das gewünschte Ergebnis so aussehen:
data1#data2#a1.txt#data4
data1#data2#a2.txt#data4
data1#data2#a3.txt#data4
data1#data2#a4.txt#data4
so das das 3.Feld des Datensatzes den Namen der Dateien des Unterordners darstellt.
Leider kann ich mit meinen Fähigkeiten die Aufgabe nicht umsetzen, so das ich hier um Hilfe nachfrage.
Gruß
Fraenky
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 138844
Url: https://administrator.de/contentid/138844
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Fraenky,
anhand deines kurzen Beispiels eventuell so in VBS
Pfade etc. muessen von dir noch angepasst werden.
Gruss
Tsuki
anhand deines kurzen Beispiels eventuell so in VBS
Pfade etc. muessen von dir noch angepasst werden.
Dim Ordner, MeineTestDatei
Dim Pfadangabe
Dim DateiVorhanden (3) , I
Dim MeineDateiNeu (3)
Ordner = "D:\1\"
MeineTestDatei = "D:\1\Test.txt"
I = 0
set FS = createobject("Scripting.FileSystemObject")
Listordner Ordner
Sub ListOrdner(ordner)
Set Ordner = FS.getfolder(ordner)
For Each Unterordner In Ordner.subfolders
Pfadangabe = unterordner.path
next
Set Ordner = FS.getfolder(Pfadangabe)
For Each file In Ordner.files
Pfadangabe = File.path
DateiNameTemp = Split(Pfadangabe , "\")
Dateiname = DateiNameTemp(UBound(DateinameTemp))
DateiVorhanden(I) = DateiName
I = I + 1
Next
End Sub
Set DateiInfo = FS.OpenTextFile(MeineTestDatei, 1)
for I = 0 to Ubound(DateiVorhanden)
temp = DateiInfo.ReadLine
temp1 = Split(temp, "#")
MeineDateiNeu(i) = temp1(0) & "#" & temp1(1) & "#" & DateiVorhanden(I) & "#" & temp1(3)
next
DateiInfo.close
Set DateiInfo = FS.CreateTextFile(MeineTestDatei, TRUE)
DateiInfo.close
Set DateiInfo = FS.OpenTextFile(MeineTestDatei, 8)
for i = 0 to Ubound(DateiVorhanden)
Dateiinfo.Writeline (MeineDateiNeu(i))
next
DateiInfo.close
msgbox "Fertig"
Gruss
Tsuki
Hallo Fraenky,
danke für die Blumen
Naja, ich lass den Schnippet mal stehen, eventuell nützt es jemand anders mal.
Der Code kann noch um vieles verkürzt werden, aber das wäre dann "Finetuning" und wer es benötigt, der kann später nochmal fragen.
Die "Basher" werden sich hoffentlich melden, weil da hab ich weniger Ideen, wegen nicht vorhandenen OS
Gruss
Tsuki
danke für die Blumen
Naja, ich lass den Schnippet mal stehen, eventuell nützt es jemand anders mal.
Der Code kann noch um vieles verkürzt werden, aber das wäre dann "Finetuning" und wer es benötigt, der kann später nochmal fragen.
Die "Basher" werden sich hoffentlich melden, weil da hab ich weniger Ideen, wegen nicht vorhandenen OS
Gruss
Tsuki