Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Teil aus txt auslesen

Frage Entwicklung Batch & Shell

Mitglied: murphy1

murphy1 (Level 1) - Jetzt verbinden

25.07.2012, aktualisiert 10:31 Uhr, 2701 Aufrufe, 8 Kommentare

Ich habe schon seit gestern morgen gesucht, finde aber keine Lösung dafür.

Ich habe eine TXT mit dem Inhalt eines Dir Befehls.
Nun möchte ich den Dateinamen aus dieser TXT auslesen.
01.
 Datenträger in Laufwerk I: ist Global 
02.
 Volumeseriennummer: 5EFD-72A8 
03.
 
04.
 Verzeichnis von I:\"PFAD" 
05.
 
06.
18.01.2012  14:23               658 CF11M100_"sn"_TempCal-TTU_"YYYYMMDD"_"hhmm".xml 
07.
               1 Datei(en),            658 Bytes 
08.
               0 Verzeichnis(se), 248'206'131'200 Bytes frei
Es befindet sich nie mehr als eine Datei mit der Serienummer in einem Verzeichnis.
Sonst wird der Ablauf sowiso unterbrochen.

CF11M100 ist statisch
"sn" ist dynamisch aber bekannt
TempCal-TTU ist statisch
und der Rest ist dynamisch und unbekannt. (existiert auch nicht immer)

Nun würde ich gerne den ganzen Dateinamen (CF11M100_"sn"_TempCal-TTU_"YYYYMMDD"_"hhmm".xml) in eine Variable einlesen.

Ich brauche den ganzen Dateinamen in einer Variable, weil ich ihn danach einem CommandLineTool übergeben muss.
Da funktioniert es nicht wenn man es mit '*' schreibt.
Mitglied: Sheogorath
25.07.2012 um 09:23 Uhr
Halloechen,

habe ich inzwischen schon mehrfach gemacht hier mal mein Code:

01.
for /f "tokens=1,* delims=:" %%i in ('findstr /n  $ DATEI.txt') do @( 
02.
        for /L %%a in (3,1,3) do @if %%i==%%a @SET VARIABLE=%%j 
03.
04.
 
05.
 
06.
set VARIABLE=%VARIABLE:~26,2%
mit der FOR-Schleife, liest du die datei aus, mit der zweiten legst du die Zeile(n) fest, welche ausgelesen werden sollen und mit dem Set zum schluss, kannst du ueber die exakte laenge der Variable bestimmen.

Hoffe ich konnte dir helfen

Gruss
Chris
Bitte warten ..
Mitglied: bastla
25.07.2012, aktualisiert um 09:55 Uhr
Hallo murphy1 und willkommen im Forum!

Wieso erzeugst Du eine Datei, und weshalb verwendest Du nicht gleich
dir /b/a-d "I:\Pfad\CF11M100*.xml"
In eine (Lauf-)Variable bekommst Du den Namen mit
for /f "delims=" %%i in ('dir /b/a-d "I:\Pfad\CF11M100*.xml"') do echo Starte Tool mit %%i
oder, wenn es unbedingt eine eigene Variable sein soll:
for /f "delims=" %%i in ('dir /b/a-d "I:\Pfad\CF11M100*.xml"') do set "Var=%%i"
Grüße
bastla
Bitte warten ..
Mitglied: murphy1
25.07.2012 um 10:21 Uhr
Hallo bastla

Vielen Dank für deinen Beitrag

Ich erzeuge die Datei, weil ich sie sowiso benötige für
01.
findstr /c:"1 Datei(en)," %CD%\DeviceVerify_File.log > nul 
02.
if %errorlevel% EQU 0 ( 
03.
	REM BEFEHL 
04.
) ELSE ( 
05.
	REM BEFEHL 
06.
)
wenn ich den von dir angegebenen Befehl anwende steht in der Variable
01.
DeviceVerify_File.log
Ich möchte aber ein Teil vom Inhalt dieser Datei in der Variable wie oben beschrieben.
Bitte warten ..
Mitglied: murphy1
25.07.2012 um 10:23 Uhr
Hallo Christoph

Vielen Dank für deinen Beitrag

Kannst du mir vielleicht beschreiben was genau dieser for befehl tut?
Vielleicht schaffe ich es, ihn selber anzupassen.
Ich kenne ihn nicht allzu gut und so wie du ihn geschrieben has funktioniert er nicht.
Bitte warten ..
Mitglied: Sheogorath
25.07.2012 um 11:02 Uhr
Halloechen,

Klar ;)

01.
for /f "tokens=1,* delims=:" %%i in ('findstr /n  $ DATEI.txt') do @(
hiermit wird festgelegt, dass es fuer zeile dieser Datei (DATEI.txt) ausgefuehrt wird. und zwar mit einem Findstr mit ausgabe der Zeile, welche irgendwas enthaelt.
01.
        for /L %%a in (3,1,3) do @if %%i==%%a @SET VARIABLE=%%j 
02.
)
hier wird die passende Zeile rausgessucht, und sobald die Zeilen uebereinstimmen, wird die Variable (VARIABLE) gesetzt
01.
set VARIABLE=%VARIABLE:~26,2%
Hier wird die Variable (VARIABLE) einfach verkuertzt. Mit %VARIABLE:~26,2% wird erst ab der 26. Stelle angefangen zu lesen, und die 2 bedeutet, von der 26. Stelle aus, 2 Zeichen genommen werden.

Anpassen muesstest du alsofolgene Werte:
VARIABLE
DATEI.txt
:~26,2

soblad du das angepasst hast, sollte es funktionieren.

Gruss
Chris
Bitte warten ..
Mitglied: bastla
25.07.2012 um 11:27 Uhr
Hallo murphy1!

Mit dem vond Dir angegebenen Schnipsel prüfst Du ja nur in der Datei "DeviceVerify_File.log" (das %CD%\ davor ist übrigens überflüssig), ob genau eine Datei gefunden wurde - mein Vorschlag ging in die Richtung, auf das Ausgeben des Inhaltsverzeichnisses in die Datei zu verzichten und gleich direkt mit dem gefundenen Dateinamen weiter zu arbeiten ...
wenn ich den von dir angegebenen Befehl anwende steht in der Variable
01.
DeviceVerify_File.log
Diese Möglichkeit würde ich ausschließen, wenn Du tatsächlich
for /f "delims=" %%i in ('dir /b/a-d "I:\Pfad\CF11M100*.xml"') do set "Var=%%i"
verwendet hast ...

BTW: Wenn mit der Möglichkeit zu rechnen ist, dass keine Datei gefunden wird, könnte das etwa so aussehen:
01.
set "Var=" 
02.
for /f "delims=" %%i in ('dir /b/a-d "I:\Pfad\CF11M100*.xml" 2^>nul') do set "Var=%%i" 
03.
if defined Var ( 
04.
    echo Datei %Var% gefunden 
05.
) else ( 
06.
    echo Keine Datei gefunden 
07.
)
Grüße
bastla
Bitte warten ..
Mitglied: murphy1
25.07.2012 um 11:48 Uhr
Vielen Dank für Euere Hilfe

Durch die Erklährung von Christoph kenne ich die ganze for /f Sache besser und
mit den Codeschnipseln von bastla brachte ich das ganze zum funktionieren.

Diese Frage wurde gelöst.
Bitte warten ..
Mitglied: bastla
25.07.2012 um 11:55 Uhr
Hallo murphy1!
Durch die Erklährung von Christoph kenne ich die ganze for /f Sache besser
Wenn Du noch mehr wissen willst: Tutorial zur FOR-Schleife

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...