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

Wert aus txt-Datei auslesen und Ordner danach benennen.

Frage Entwicklung Batch & Shell

Mitglied: yearlight

yearlight (Level 1) - Jetzt verbinden

01.07.2013 um 09:52 Uhr, 1242 Aufrufe, 10 Kommentare, 3 Danke

Guten Morgen,
ich versuche einen Wert aus einer txt-Datei auszulesen (hier 4. Zeile, Wert nach einem "=" oder "-" -Zeichen) um danach unter diesem Wert einen Ordner anzulegen.

Ich kriege aber nur die erste Zeile ausgegeben.
Mitglied: colinardo
01.07.2013, aktualisiert um 11:44 Uhr
Hallo yearlight,
mit folgendem VBS-Script kein Problem:
FILEPATH -> deine Textdatei
BASEFOLDER -> Basis-Ordner in dem der neue Ordner erstellt werden soll (Wenn dein Wert schon einen ganzen Pfad enthält musst du in der letzten Zeile das BASEFOLDER & "\" & entfernen. Das Script geht davon aus das dein String in Zeile 4 steht.
01.
FILEPATH = "C:\test.txt" 
02.
BASEFOLDER = "C:\Basefolder" 
03.
 
04.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
05.
Set objText = objFSO.OpenTextFile(FILEPATH, 1) 
06.
allArray = Split(objText.ReadAll,vbCrLf) 
07.
objText.Close() 
08.
strWertArray = Split(allArray(3),"=") 
09.
If UBound(strWertArray) > 0 Then 
10.
	strFolderName = Trim(strWertArray(1)) 
11.
Else 
12.
	strFolderName = Trim(Split(allArray(3),"-")(1)) 
13.
End If 
14.
objFso.CreateFolder(BASEFOLDER & "\" & strFolderName) 
15.
 
Grüße Uwe
Bitte warten ..
Mitglied: yearlight
01.07.2013 um 11:23 Uhr
Servus Uwe,
vielen Dank für die schnelle Antwort. Ich brauche die Hilfe für eine Batch-Datei.
Wenn ich jetzt dein Beispiel durchlaufen lasse, wird am Ende der batch nur die durchsuchte Textdatei geöffnet, ein Verzeichnis wird nicht angelegt.
Den Dateinamen (bei mir ServiceInfo.txt) habe ich in Apostrophe gesetzt.
Keine Ahnung, brauche ich noch irgendwelche Umgebungsvariablen?
Steh total auf dem Schlauch, bin mit der Syntax einfach nicht vertraut genug.
Bitte warten ..
Mitglied: colinardo
01.07.2013, aktualisiert um 11:53 Uhr
So das hier sollte jetzt gehen:

01.
setlocal ENABLEDELAYEDEXPANSION 
02.
for /f "skip=3 tokens=* delims=" %%k in ('type "ServiceInfo.txt"') do @( 
03.
   set wert=%%k 
04.
   for /f "tokens=2 delims==-" %%m in ("!wert!") DO @( 
05.
      md "%%m" 
06.
      goto ENDE 
07.
08.
09.
:ENDE
Bitte warten ..
Mitglied: yearlight
01.07.2013 um 13:29 Uhr
Uwe, das geht, das geht.

ich komme aber trotzdem nicht weiter. Am Abschluss dieses Skriptes versuche ich Dateien in dieses neu erstellte Verzeichnis zu kopieren.
Ich mache absolute Pfadangaben, bekomme aber als Fehlermeldung nur System kann Datei nicht finden.
Kann ich die variable m weiterhin als Pfadangabe für das Zielverzeichnis benutzen?

Und warum werden die Dateien nicht gefunden?
Inzwischen habe ich auch kapiert wie Du vorgegangen bist. Steh aber wieder auf dem Schlauch.

Vielen dank für deine Geduld

Achim
Bitte warten ..
Mitglied: colinardo
01.07.2013, aktualisiert um 14:27 Uhr
Steht in dem Wert hinter dem Gleichheitszeichen ein Absoluter Pfad in deiner Datei oder ein relativer ?

für einen relativen nehme das hier und setze in Zeile 2 den Basisordner in dem der neue erstellt werden soll.
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
set BASISORDNER=C:\Basisordner 
03.
for /f "skip=3 tokens=* delims=" %%k in ('type "ServiceInfo.txt"') do @( 
04.
   set wert=%%k 
05.
   for /f "tokens=2 delims==-" %%m in ("!wert!") DO @( 
06.
      set neuerOrdner=!BASISORDNER!\%%m 
07.
      md "!neuerOrdner!" 
08.
      goto ENDE 
09.
10.
11.
:ENDE 
12.
copy deinedatei.txt "!neuerOrdner!"
bei einem absoluten Pfad das hier:
01.
@echo off & setlocal ENABLEDELAYEDEXPANSION 
02.
for /f "skip=3 tokens=* delims=" %%k in ('type "ServiceInfo.txt"') do @( 
03.
   set wert=%%k 
04.
   for /f "tokens=2 delims==-" %%m in ("!wert!") DO @( 
05.
      set neuerOrdner=%%m 
06.
      md "!neuerOrdner!" 
07.
      goto ENDE 
08.
09.
10.
:ENDE 
11.
copy deinedatei.txt "!neuerOrdner!"
Bitte warten ..
Mitglied: yearlight
01.07.2013 um 14:11 Uhr
Danke, aber jetzt legt er mir wieder keinen Ordner mit der Variablen m an.
Syntaxfehler?
Bitte warten ..
Mitglied: Endoro
01.07.2013, aktualisiert um 16:46 Uhr
Hallo yearlight,

zum Testen:

01.
@echo OFF &setlocal 
02.
SET "startfolder=." REM hier den Start Ordner eintragen 
03.
CD /d "%startfolder%" 
04.
for /f "usebackqskip=3 tokens=2 delims==-" %%k in ("ServiceInfo.txt") do ( 
05.
	IF NOT DEFINED folder MD "%%~k" 
06.
	SET "folder=%%~k" 
07.
)
lg,
Bitte warten ..
Mitglied: colinardo
01.07.2013 um 16:49 Uhr
Zitat von Endoro:
Stimmt, geht ja viel simpler, hab heut' nen Batch-Brett vorm Kopf
Danke Endoro
Bitte warten ..
Mitglied: yearlight
01.07.2013 um 16:50 Uhr
Hallo Uwe, hallo Endoro,
ich habe den Fehler bei mir gefunden, musste die cmd einfach mal neu starten. Vielen Dank Uwe für deine Geduld, und danke Endoro für das Weiterverfolgen, ich gucks mir Deine Idee noch einmal an.

Auf jeden Fall habe ich heute wieder einiges gelernt.

Vielen Dank
Achim
Bitte warten ..
Mitglied: colinardo
02.07.2013 um 10:06 Uhr
Noch zur Info: Bitte markiere den Beitrag als gelöst. Siehe dazu die FAQ
Merci
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
Wert in einer TXT Datei suchen (11)

Frage von nolle99 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...