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

Batch Datei soll String aus einer oder mehreren Dateien auslesen

Frage Entwicklung Batch & Shell

Mitglied: webrunner1

webrunner1 (Level 1) - Jetzt verbinden

15.05.2013 um 12:02 Uhr, 1564 Aufrufe, 7 Kommentare

Hallo zusammen,

ich möchte via Batch aus einer oder mehreren Text-Dateien einen String (steht immer an gleicher Stelle)
auslesen, diesen String als Verzeichnis anlegen (sofern nicht schon vorhanden) und die ausgelesene(n) Datei(en)
in diese(s) Verzeichnis(se) verschieben.

Habe mich in diesem Forum schon einige Hinweise gefunden. Bekomme aber nur den Strin aus einer Datei gelesen.

Kann dazu jemand weiterhelfen?

Vielen Dank schon mal für die Hilfe.

Gruss webrunner1
Mitglied: TsukiSan
15.05.2013 um 13:38 Uhr
Hallo webrunner1,

01.
findstr /?
und
01.
set /?
in der Konsole eingegeben sind deine Freunde oder ES.

Wie sieht denn dein bisheriger Code aus?

Gruss
Tsuki
Bitte warten ..
Mitglied: webrunner1
15.05.2013 um 14:25 Uhr
Hallo Tsuki,

sorry, den habe ich übersehen zu posten:


set dateipfad=c:\temp\
set dateimaske=DEL*.TMP

for /f "delims=" %%a in ('findstr /n /v "qwertzuiop" %dateipfad%%dateimaske% ^|findstr "^1:"') do @Set "%dateipfad%%dateimaske%=%%a"

echo %dateipfad%%dateimaske%ln:~11,6%


Wenn anstelle der Variablen in der FOR-Anweisung ein fester Name gesetzt wird, wird der String gefunden.

In der FOR-Anweisung wird das Ergebnis als Variable ausgegeben, evtl. könnte man gleich das Kopieren in den
Ordner mit dem gesuchten String veranlassen.

Ich hoffe, dass ich mit einigermaßen verständlich ausgedrückt haben.

Gruss
Bitte warten ..
Mitglied: bastla
15.05.2013 um 15:12 Uhr
Hallo webrunner1 und willkommen im Forum!

Ich versuche mal, zu interpretieren: Der in allen "DEL*.TMP"-Dateien enthaltene String befindet sich jeweils in der ersten Zeile ab Position 12 und ist 6 Zeichen lang - falls ja, dann (völlig ungetestet) etwa so:
01.
@echo off & setlocal 
02.
set "dateipfad=c:\temp\" 
03.
set "dateimaske=DEL*.TMP" 
04.
 
05.
pushd "%dateipfad%" 
06.
for /f "delims=" %%i in ('dir /b "%dateimaske%"') do call :ProcessFile "%%i" 
07.
popd 
08.
pause 
09.
goto :eof 
10.
 
11.
:ProcessFile 
12.
set /p Zeile1=<%1 
13.
set "Verzeichnis=%Zeile1:~11,6%" 
14.
md "%Verzeichnis%" 2>nul 
15.
echo move %1 "%Verzeichnis%" 
16.
goto :eof
Die Verzeichnisse werden erstellt, das Verschieben aber wegen des "echo" in Zeile 15 nur durch Ausgabe des "move"-Befehls simuliert. Wenn das Ergebnis vernünftig aussieht, einfach dieses "echo" entfernen ...

Grüße
bastla
Bitte warten ..
Mitglied: webrunner1
15.05.2013 um 15:55 Uhr
Hallo bastla,

die ersten Tests schauen vielversprechend aus.
Vielen Dank für die schnelle Unterstützung.

Gruss webrunner1

P.S. falls ich beim weiteren Ausbau der Routine auf Probleme stoße, werde ich mich nochmal melden.
Bitte warten ..
Mitglied: webrunner1
17.05.2013 um 08:22 Uhr
Hallo bastla,

ich konnte die Routine den Anforderungen soweit anpassen.

Irgendwie steh ich im Wald und komme bei einer Sache (leider) noch nicht weiter:
Was muss in das Script noch eingebaut werden, damit nach dem Abschnitt :ProcessFile
(nachdem die Datei(en) abgearbeitet wurde(n)) noch weitere Anweisungen eingebaut werden können?

Vielen Dank schon mal für die Antwort.

Gruss webrunner1
Bitte warten ..
Mitglied: Biber
17.05.2013 um 10:44 Uhr
Moin webrunner1,

wenn der Batch noch irgendetwas machen soll, nachdem die einzelnen Dateien in :ProcessFile verarbeitet worden sind, dann diesen Code vor die jetzige Zeile "pause" einfügen.

wenn der Batch noch irgendetwas mit den einzelnen Dateien in :ProcessFile machen soll, dann diesen Code vor die jetzige Zeile "goto :eof" in :ProcessFile einfügen.

Grüße
Biber
Bitte warten ..
Mitglied: webrunner1
20.05.2013 um 12:59 Uhr
Hallo Biber,

danke das war's!

Gruss webrunner1
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (21)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...