Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Dateinamen auslesen und in Textdatei ausgeben

Mitglied: Philosoph

Philosoph (Level 1) - Jetzt verbinden

13.07.2010 um 12:14 Uhr, 5183 Aufrufe, 15 Kommentare

Hallo liebes Forum,

der Tommy ist wieder da und hat eine Frage. Ich bin ja mal gespannt, ob jemand tatsächlich schneller ist als Bastler, der Shell-Gott im Forum.
Ich möchte eine Ordnerstruktur auslesen und jeden gefunden Dateinamen aus der Ordnerstruktur A mit allen Dateinamen der Ordnerstruktur B kombinieren. Das Ergebnis soll in einer TXT ausgegeben werden.
Jetzt die Details: Meine Ordnerstruktur sieht so aus

-Ordnerstruktur A:
|-Ordner3 (Inhalt: M1.jpeg)
|-Ordner6
|-Ordner4
|-Ordner2
|-Ordner5
|-Ordner8


-Ordnerstruktur B:
|-Ordner3 (Inhalt: G2.jpeg, G3.jpg, G6.tiff, G8tif)
|-Ordner6
|-Ordner4
|-Ordner2
|-Ordner5
|-Ordner7

Am Beispiel was das Skript genau macht:
Skript holt sich die Dateienamen aus der Verzeichnisstruktur A und kombiniert die gefundenen Dateinamen jeweils mit den Dateinamen aus Ordnerstruktur B.
Das Ergebnis sollte dann so aussehen:

M1-G2
M1-G3
M1-G6
M1-G8

User Bastla hat mir so etwas ähnliches mal gemacht, aber ich schaffe es leider nicht alleine das Skript für diesen Zweck umzubiegen.
Hat jemand eine Idee oder Ansätze für mich? Ist das überhaupt über die Shell zu lösen?
Eigentlich muss "nur" die Dateiliste von "Ordner 3" mit der gesamten Dateiliste von Verzeichnisstruktur B kombiniert werden.
Danach der Inhalt von Ordner6 mit der gesamten "Ordnerstruktur B"...
So, jetzt bin ich gespannt was das alte gute DOS so drauf hat - bzw. der Nachfolger.

LG
Tommy
Mitglied: LotPings
13.07.2010 um 13:18 Uhr
Hallo tommy,

bastla war vor 4 Tagen das letzte Mal aktiv,
fraglich ob er das so schnell mitbekommt.

Aber so ganz klar ist das noch nicht,
  • Ist deine Ordnerstruktur B immer spiegelbildlich zu A?
  • gibt es jeweils nur eine Ordner Ebene oder mehrere?
  • gilt das für alle Dateien oder sind nur betsimmte Extensions zu berücksichtigen?

Gruß
LotPings
Bitte warten ..
Mitglied: Philosoph
13.07.2010 um 13:33 Uhr
Hallo LotPings.

Na dann hoffe ich, dass bastla bald wieder online ist. Er war war und ist eine Bereicherung für das Forum!
Und ich denke, mit seinen Erfahrungen kann er hier so einigen weiterhelfen!

Nun zu deinen Fragen:

  • Ist deine Ordnerstruktur B immer spiegelbildlich zu A?
Nein. Die Verzeichnisstruktur ist eine andere. Die beiden Strukturen haben natürlich auch verschiedene Inhalte:
einmal Gerätetemplates (G1.jpeg, G2.JPG, G3.tiff ...) und die zweite Struktur Motive-Templates (M1.jpeg, M2.TIF ...).
Nun soll das Skript sich von jeder Datei aus Verzeichnisstruktur A den Dateinamen M1 schnappen und mit G1, G2, G3... kombieren:
M1-G1
M1-G2
M1-G3
...
...

Wenn das mit dem M1 Dateinamen abgeschlossen ist, soll das Skript mit der nächsten M Datei das selbe fortführen:
M1-G1
M1-G2
M1-G3
M2-G1
M2-G2
M2-G3

  • gibt es jeweils nur eine Ordner Ebene oder mehrere?
Die Ordnerstruktur kann sich tatsächlich in die Tiefe verschachteln.

  • gilt das für alle Dateien oder sind nur betsimmte Extensions zu berücksichtigen?
Es befinden sich tatsächlich verschiedene Formate im Ordner. Es sollen aber nur JPEG, JPG, TIF, TIFF Dateien indexiert und miteinander kombiniert werden.

Danke für deine konkreten Fragen!
LG
Tommy
Bitte warten ..
Mitglied: Philosoph
13.07.2010 um 15:43 Uhr
Noch eine Anregung meinerseits:

Das Skript kann auch so arbeiten, dass je Verzeichnisstruktur eine Text-Datei mit dem Verzeichnisbaum-Inhalt angelegt wird.
So können später beide Textdateien (bzw. Dateinamen) je Zeile miteinander kombiniert werden werden.
Das kann dann so aussehen:

Textdatei1:
M1
M2
M3
M4

Textdatei2:
G1
G2
G3
G4

Ergebnis.txt:
M1-G1
M1-G2
M1-G3
M1-G3
Bitte warten ..
Mitglied: LotPings
13.07.2010 um 17:00 Uhr
Nö,
die direkte Version ist eigentlich einfacher.
Dieser erste Batch war auch vorhin schon fast fertig, aber dann kam halt was (für mich) wichtigeres dazwischen....

Only braintested (kann man sich nicht immer drauf verlassen )
01.
@Echo off 
02.
Setlocal EnableDelayedExpansion 
03.
Set BasisA=D:\Test\projekt\geraete\ 
04.
Set BasisB=D:\Test\projekt\motive\ 
05.
Pushd "%BasisA%" 
06.
For /f "delims=" %%A in ('Dir /B /AD') Do Call :CheckFold "%%~fA" 
07.
Echo Habe fertig. 
08.
Pause 
09.
Popd 
10.
Goto :Eof 
11.
:CheckFold 
12.
Set "GeraeteTemplates=%~1" 
13.
Set "MotiveTemplate=!GeraeteTemplates:%BasisA%=%BasisB%!" 
14.
If Not Exist "%MotiveTemplate%" Goto :Eof 
15.
Pushd "%MotiveTemplate% 
16.
For /F "delims=" %%B in ('Dir /B "%GeraeteTemplates%\*.jpeg"' 
17.
 ) Do For /F "Delims=" %%C in ('Dir /B *.JPEG *.JPG *.TIF *.TIFF' ) Do Echo.%%~nB-%%~nC 
18.
PopD
Gruß
LotPings

Version überarbeitet und getestet, sollte jetzt funktionieren
Bitte warten ..
Mitglied: Philosoph
13.07.2010 um 17:06 Uhr
Ahoi!

Was muss ich noch machen, damit mir das Ergebnis ausgegeben wird?
Ich kann zwar deinem Code teilweise folgen, sehe aber hier keine Anweisung für die Ausgabe in einer TXT Datei.

Oder habe ich da etwas übersehen im Code?



LG
Tommy
Bitte warten ..
Mitglied: LotPings
13.07.2010 um 17:16 Uhr
Hallo Tommy,

dazu müsstest du in Zeile 19 noch eine Ausgabeumleitung in eine Datei einbauen,
aber hey wir testen das doch gerade erst - hast du denn eine korrekte Ausgabe auf dem Bildschirm?

Gruß
LotPings
Bitte warten ..
Mitglied: Philosoph
13.07.2010 um 17:28 Uhr
Hi LotPings!!

Also die Ausgabe auf dem Monitor (cmd) sieht wie folgt aus (@Echo off deaktiviert)

C:\test\Projekt>Setlocal EnableDelayedExpansion
C:\test\Projekt>Set BasisA=c:\test\projekt\geraete\
C:\test\Projekt>Set BasisB=c:\test\projekt\motive\
C:\test\Projekt>Pushd "c:\test\projekt\geraete\"
C:\test\Projekt\geraete>For /F "delims=" %A in ('Dir /B /AD') Do Call :CheckFold
"%~fA"

C:\test\Projekt\geraete>Echo Habe fertig.
Habe fertig.

C:\test\Projekt\geraete>Pause
Drücken Sie eine beliebige Taste . . .
Alle Pfade und Befehle scheinen zu greifen. Fehlt mir also tatsächlich nur noch die Ausgabe der Kombinationen der Dateinamen in einer Textdatei.
Hilft dir das weiter?
Übrigens, du hast die Variable GeraeteTemplates einmal mit ae und einmal mit ä geschrieben. Wurde bereits verbessert.
Bitte warten ..
Mitglied: LotPings
13.07.2010 um 18:14 Uhr
Habe die Batch jetzt bei mir getestet (in LW D:\ ) und etwas überarbeitet - hier klappt es soweit.
Änderungen siehe oben.

Gruß
LotPings
Bitte warten ..
Mitglied: Philosoph
13.07.2010 um 21:36 Uhr
Ahoi!

So, nun bin ich auch mal daheim. Aber kann es dann doch nicht lassen weiter zu probieren.
Denn auch nachdem du dein Skript geändert hast, wird bei mir keine neue Textdatei mit den Kombinationen angelegt.

Ich sehe auch im Skript keine Anweisung, die das Ergebnis in eine Text-Datei umleitet.
die Pfade habe ich so übernommen. Mache ich da was falsch?


LG
Tommy
Bitte warten ..
Mitglied: LotPings
13.07.2010 um 21:45 Uhr
Zitat von Philosoph:
So, nun bin ich auch mal daheim. Aber kann es dann doch nicht lassen weiter zu probieren.
Denn auch nachdem du dein Skript geändert hast, wird bei mir keine neue Textdatei mit den Kombinationen angelegt.

Philosohen sind doch eigentlich Denker, da passt was nicht.
Solange du nicht gehen kannst - versuchen wir wir gar nicht erst zu laufen.

Ich sehe auch im Skript keine Anweisung, die das Ergebnis in eine Text-Datei umleitet.
die Pfade habe ich so übernommen. Mache ich da was falsch?

HAST DU DENN INZWISCHEN EINE PASSENE BILDSCHIRMAUSGABE ?????????

Ich bin eigentlich diese Woche sehr zurückhaltend,aber du schaffts es bald das zu ändern

Gruß
LotPings
Bitte warten ..
Mitglied: Philosoph
13.07.2010 um 21:53 Uhr
Hmmmm,

dann musst du mir erklären was für dich "eine passende Bildschirmausgabe ist". Ich bin davon ausgegangen, dass du damit die Rückmeldung der cmd.exe haben willst. Also was erscheint, wenn ich das Skript ausführe. Aber das habe ich dir ja oben bereits gepostet.

Das ist meine aktuelle Bildschirmausgabe, was ich dir aber bereits oben gepostet habe.
Habe fertig.
Drücken Sie eine beliebige Taste . . .

Falls du jedoch meine Wunsch-Formatierung der Text-Datei meinst:
Motivdateinameohneendung-Gerätedateiname(ohneendung)
Beispiel:
M454564-Gerät454654
M454564-Gerät448
M454564-Gerät6684

Aber wenn ich auch damit falsch liege:
Was verstehst du nun unter einer Bildschirmausgabe? Ich bin mir sicher, dass ich dir dann dienen kann.
Und immer locker bleiben, ich kenne selbst das Problem mit den blöden Fragen (dann aber aus dem Photoshop und Illustrator Bereich). Und ich habe früher selbst programmiert, in Profan und C. Aber ich werde mich bessern - versprochen.

Grüße aus Bad Kreuznach
Tommy
Bitte warten ..
Mitglied: LotPings
13.07.2010 um 22:12 Uhr
Ich habe mir nach deinen obigen Angaben eine Testumgebung zusammengestellt:

01.
18:03:27 +D:\Test\Projekt____________________ 
02.
>dir /B/S/A 
03.
D:\Test\Projekt\geraete 
04.
D:\Test\Projekt\motive 
05.
D:\Test\Projekt\Philosoph.cmd 
06.
D:\Test\Projekt\geraete\Ordner3 
07.
D:\Test\Projekt\geraete\Ordner3\M1.jpeg 
08.
D:\Test\Projekt\motive\Ordner3 
09.
D:\Test\Projekt\motive\Ordner3\G2.jpeg 
10.
D:\Test\Projekt\motive\Ordner3\G3.jpg 
11.
D:\Test\Projekt\motive\Ordner3\G6.tif 
12.
D:\Test\Projekt\motive\Ordner3\G8.tif
Mit der aktuellen obigen Batchversion erhalte ich diese Ausgabe:
01.
18:10:25 +D:\Test\Projekt____________________ 
02.
>Philosoph.cmd 
03.
M1-G2 
04.
M1-G3 
05.
M1-G6 
06.
M1-G8 
07.
Habe fertig. 
08.
Drücken Sie eine beliebige Taste . . .
Und wenn ICH dich richtig verstanden habe, entspricht das deinen Wünschen.

Um diese Ausgabe in eine Datei umzuleiten muss jetzt nur noch
Echo.%%~nB-%%~nC
gegen
>>"X:\Pfad\Datei.ext" Echo.%%~nB-%%~nC
getauscht werden.

Gruß
LotPings
Bitte warten ..
Mitglied: Philosoph
13.07.2010 um 22:39 Uhr
Super, ich danke dir sehr!
Damit hast du mir viele schlaflose Nächte genommen. Ich habe das Skript bzw den Befehl "dir" mit dem Parameter /s erweiter: For /F "delims=" %%B in ('Dir /B /S "%GeraeteTemplates%\*.jpg"'
Nun werden auch Verzeichnisse inklusive Unterordner abgearbeitet. Dadurch entsteht folgendes Problem:

Beispiel:
Im Motive-Ordner "123" liegt die Datei M1.jpeg.
In einem anderen Motive-Ordner (z.B. ein Unterordner) liegt die selbe Datei: M1.jpeg.
Und genau diese Datei (Zeichenfolge) soll das Skript überspringen da sie bereits einmal abgearbeitet/kombiniert wurde.


Bietet diese Skriptsprache eine Funktion die ich dafür anwenden kann?
In einem anderen Forum wurde bereits danach gefragt, leider ohne Erfolg und Ergebnis.


Bis morgen in alter Frische
Tommy
Bitte warten ..
Mitglied: LotPings
13.07.2010 um 23:22 Uhr
Wenn ich dich da jetzt richtig verstehe sind mir da M G durcheinander geraten?

Grundsätzlich kannst du alle bereits ausgegebenen Motive in einer tempDatei festhalten und bei jedem erneuten Versuch checken ob bereits in der Temp enthalten.
Das verlangt einige Umstzellungen und verlangsamt das ganze auch, aber machbar.

Falls ich wieder Zeit und Lust habe .... jetzt wirds mir zu spät und zuviel.

Gruß
LotPings
Bitte warten ..
Mitglied: Philosoph
14.07.2010 um 08:48 Uhr
Hallo LotPings,

das Problem bzw. die Fragestellung hier ist gelöst. Ich bin gerade dabei das Skript genau zu testen und anzupassen.
Das Problem mit mehrfach vorhandenen Einträgen fange ich am Ende so ab:
Die doppelten Einträge werden mit einem kleinen Tool gesucht und entfernt.

01.
C:\Programme\GnuWin32\bin\sort.exe -u D:\test\vorlaeufige_artikelliste.txt > D:\test\endgueltige_artikelliste.txt
Ein Problem sehe ich noch, aber dazu melde ich mich gleich nochmal.


LG
Tommy
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
PowerShell Array in Textdatei ausgeben
gelöst Frage von derhoeppiBatch & Shell2 Kommentare

Hallo, der Titel hört sich nicht allzu schwer an. Ich habe eine Foreach Schleife die Durchläuft und ein Array ...

VB for Applications

Dateinamen und Artikelanzahl in eine Datei ausgeben

gelöst Frage von HeiltorVB for Applications13 Kommentare

Hallo an alle! Ich bin hier neu, es ist mein erster Schrei nach Hilfe. Ich fange gerade an, VBA ...

Batch & Shell

Dateiname in Textdatei via Batch

gelöst Frage von plutowitschBatch & Shell4 Kommentare

Hallihallo, mein Problem ist wahrscheinlich für den Ein oder Anderen recht trivial, für mich als Anfänger jedoch schwieriger als ...

VB for Applications

Import Textdatei von Dateiname aus Zelle

Frage von grasihuepferVB for Applications2 Kommentare

Hi Leute, Ich möchte eine Textdatei importieren. Und zwar soll der Pfad des Datei Ortes in einer bestimmten Zelle ...

Neue Wissensbeiträge
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 9 StundenHumor (lol)2 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 22 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 22 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 1 TagMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server45 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware16 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...