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

Script Dateiinhalt auslesen und verschieben oder kopieren Batch

Frage Entwicklung Batch & Shell

Mitglied: Slater55

Slater55 (Level 1) - Jetzt verbinden

01.08.2014, aktualisiert 04.08.2014, 2454 Aufrufe, 6 Kommentare

Hallo,

ich benötige Hilfe zum Thema Scripten.

Ich habe folgendes Problem. Wir nutzen in unserer Firma (mit 4 Töchterfirmen) Easylog (DHL) um Pakete zu versenden. Die Sendungsdaten werden direkt als txt-Datei aus unserem Warenwirtschaftssystem exportiert und in Easylog eigelesen. Dach dem wir dann ein Label generiert haben und die täglichen Sendungen abgeschlossen haben, wird eine Rückmeldungsdatei (auch eine txt-Datei) generiert, die wir dann wiederum in unser Warenwirtschaftssystem einlesen.

Soweit so gut, dass funktioniert auch alles wunderbar, ABER: die Rückmeldungen für alle Absender (insgesamt haben wir 5 verschiedene Absenderadressen) werden alle in nur 1 Ordner gepollt. Das kann man in Easylog auch leider nicht anders hinterlegen. Wir müssen daher die Dateien manuell öffnen um zu sehen welche Firma die Sendung betrifft um diese dann wiederum manuell in die Warenwirtschaft einzulesen, da vorher in der WAWI die Firma ausgewählt werden muss.

Meine Idee ist es, dass wir mit einem einfachen Script, dass die Dateizeilen ausliest (da darin auch die Absenderdaten enthalten sind) und dann die jeweilige Datei in einen Unterordner verschiebt oder kopiert.

Also quasi bisher läuft alles in C:\Easylog und es soll dann von dort in C:\Easylog\Firma1, C:\Easylog\Firma2, C:\Easylog\Firma3, C:\Easylog\Firma4 oder in C:\Easylog\Firma5 kommen. Am besten in einer Schleife, die das Minutenweise erledigt.

Die txt-Dateien sind wie folgt aufgebaut:

Lfd.Nr; Sendungsnummer;ka;ka;ka;MD;Absendername
11313;123456789012;0;1;1;74;Firma1;;usw.

Da ich leider nicht allzu viel von Scripts versehen hoffe ich jemand kann mir hier helfen.

Vielen Dank im Voraus und schönes WE.
Mitglied: rubberman
01.08.2014 um 21:56 Uhr
Hallo Slater55, willkommen im Forum.

Die Textdatei besteht nur aus dieser einzigen Zeile, oder gibt es weitere Zeilen davor oder danach?

Grüße
rubberman
Bitte warten ..
Mitglied: Slater55
01.08.2014 um 22:55 Uhr
Hallo rubberman,

vielen Dank.

Ne in den Textdateien stehen mehrere Zeilen. Pro Paket wird darin eine Zeile geschrieben, d.h. unter Umständen können da auch durch aus bis zu 200 Zeilen drin sein. Hab nur den Anfang einer Zeile als Beispiel kopiert.

Gruß
Slater55
Bitte warten ..
Mitglied: rubberman
01.08.2014, aktualisiert um 23:29 Uhr
OK, worauf ich hinaus will ist, dass es ganz unterschiedliche Methoden gibt, mit Textdateien zu arbeiten.
Für die eine ist bspw. interessant ob das Gesuchte bereits in der ersten Zeile steht (darf also auch keine Leerzeile sein), für die andere ist interessant ob alle Zeilen den gleichen Aufbau haben bzw. welche Zeile die erste ist, die ausgewertet werden soll.

Wir können ja mal testen ...
1. Variante
01.
@echo off &setlocal 
02.
<"datei.txt" set /p "line=" 
03.
for /f "tokens=7 delims=;" %%i in ("%line%") do echo %%i 
04.
pause
2. Variante
01.
@echo off &setlocal 
02.
for /f "usebackq tokens=7 delims=;" %%i in ("datei.txt") do set "company=%%i" 
03.
echo %company% 
04.
pause
Nehme statt "datei.txt" einen real existierenden Dateiname.

Funktioniert bereits eine der Varianten (wird der Firmenname ausgegeben)?

Grüße
rubberman
Bitte warten ..
Mitglied: Slater55
02.08.2014, aktualisiert um 00:27 Uhr
Schon mal vielen Dank für die Hilfe. Also die Firma wird schon mal erkannt sogar bei beiden Varianten
Bitte warten ..
Mitglied: rubberman
LÖSUNG 02.08.2014, aktualisiert 04.08.2014
Na super, dann bau ich das mal noch in eine Schleife ein.
01.
@echo off &setlocal 
02.
for /f "delims=" %%i in ('dir /a-d /b *.txt') do ( 
03.
  set "file=%%i" 
04.
  setlocal EnableDelayedExpansion 
05.
  <"!file!" set /p "line=" 
06.
  for /f "tokens=7 delims=;" %%j in ("!line!") do ( 
07.
    if not exist "%%~j\" md "%%~j" 
08.
    move "!file!" "%%~j\" 
09.
10.
  endlocal 
11.
)
Sollte die Dateiendung nicht txt sein (sondern bspw. csv), dann noch in Zeile 2 ändern.

Grüße
rubberman
Bitte warten ..
Mitglied: Slater55
04.08.2014 um 08:41 Uhr
Super. Vielen Dank. Das macht ganz genau das was es soll!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

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 ...