Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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
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, 1261 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Mit Batch Datei nach Ordner benennen indem sie sich befindet? (4)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Batch & Shell
gelöst Werte aus CSV in TXT - Powershell (20)

Frage von Komoran12 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Taschenrechner in IOS kaputt!

(7)

Information von Lochkartenstanzer zum Thema Humor (lol) ...

Sicherheit

Kanadischer Geheimdienst veröffentlicht erstmals Sicherheitssoftware

(3)

Information von BassFishFox zum Thema Sicherheit ...

Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Heiß diskutierte Inhalte