Top-Themen

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 Batch Skript soll nach zu verarbeitenden Daten fragen und korrekt in Textdatei ändern

Mitglied: Kinkerlitzchen

Kinkerlitzchen (Level 1) - Jetzt verbinden

25.10.2012 um 01:42 Uhr, 2942 Aufrufe, 5 Kommentare

Hallo Leute! Ich bin neu hier und versuche mir das private Leben mit ein wenig Automatisierung zu erleichtern. Allerdings komme ich momentan nicht weiter..

Ziel:
Statt einem in der Batch festgelegten Wort, dass in einer Textdatei ein anderes Wort ersetzt, möchte ich, das mir die Batch bei der Verarbeitung die Möglichkeit gibt das Ersatzwort zu definieren.

Szenario:
Ich möchte eine Textdatei auf einem Netzwerkgerät per ftp nach und nach füllen. Diese Textdatei wird auf dem Gerät weiterverarbeitet. Die fertige Datei "LISTE.txt" sieht etwa so aus:

Team1;Mo;Training1
Team2;Mo;Training1
Team3;Mo;Training1
Team1;Mi;Training2
Team2;Mi;Training3
Team3;Mi;Training3
Team4;Mi;Training3

Ich möchte die Trainings bearbeiten. Vorgegangen bin ich nun so: Ich habe eine Basis.txt auf dem Rechner erstellt. Schema:

Team1;Mo;Trainingsname
Team2;Mo;Trainingsname
Team3;Mo;Trainingsname

Bisherige Praxis:
Hier suche ich per Skript "Trainingsname", was dann in eine neue Tempdatei geschrieben wird und durch z.B. Training1 ersetzt wird. Den Text aus dieser Datei füge ich dann in den Text einer auf meinem Rechner vorhandenen Datei "LISTE.txt" und schicke sie per ftp auf das Netzwerkgerät. Danach wird Tempdatei gelöscht. Das ganze funktioniert und sieht so aus:

01.
echo off 
02.
setlocal enabledelayedexpansion 
03.
 
04.
set "filename=Basis.txt" 
05.
set "tempfile=Basis-Temp.txt" 
06.
 
07.
for /F "delims=" %%a in (%filename%) do ( 
08.
set text=%%a 
09.
set text=!text:^Trainingsname=Test! 
10.
echo !text!>>%tempfile% 
11.
12.
more Basis-Temp.txt >> LISTE.txt 
13.
 
14.
ftp.exe -n -i -s:kopieren.ftp 
15.
 
16.
del %tempfile% 
17.
exit
Ziel erkannt, auf dem Weg gescheitert:
Nun möchte ich aber nicht immer die Batch vorher öffnen und den Trainingsnamen darin ändern, sondern hätte es lieber, dass ich bei der Ausführung der Batch in die Konsole den Namen eingeben könnte.

Mein Versuch war, vor der Ersetzen-Zeile eine Eingabe zu fordern und weiterzuverarbeiten.:
01.
set /p EINGABE=Trainingsnamen Eingeben: 
02.
set text=!text:^Trainingsname=%EINGABE%
Hat nicht geklappt.
1. muss ich jetzt zu jedem gefundenen "Trainingsname" etwas eingeben, statt einmal für alle!
2. Wird mein Text nicht eingefügt.
Die Liste sieht nachher so aus:

text:Trainingsname=
text:Trainingsname=
text:Trainingsname=

Wie muss ich richtig vorgehen?

Das geht alles sicher viel effizienter (verschiedene Wochentage werden in der Batch danach genauso verarbeitet und greifen nur auf andere Listen zu) aber ich wäre schon happy, wenn ihr mir helfen könntet einen Schritt weiter zu kommen.

Grüße Kinkerlitzchen



Mitglied: bastla
LÖSUNG 25.10.2012, aktualisiert 16.01.2014
Hallo Kinkerlitzchen und willkommen im Forum!

Wenn (verständlicher Weise ) der Trainingsname nur einmal eingegeben werden soll, darf die Eingabe nicht innerhalb der Schleife erfolgen, sondern zB in Zeile 6 ...

Grüße
bastla
Bitte warten ..
Mitglied: andimue
25.10.2012 um 13:17 Uhr
Wenn du, wie bastla schon gesagt hat den set /p ausserhalb der for-Schleife machst und sich deshalb die Variable Eingabe nicht mehr ändert musst du in der for-Schleife auch nicht mehr mit delayedexpansion arbeiten sondern kannst die %EINGABE% ganz normal an deinen Text anhängen,also in etwa so:
01.
set text=%text%:^Trainingsname=%EINGABE%
oder gleich so:
01.
set text=%%a:^Trainingsname=%EINGABE%

Alle Angaben ohne Gewähr da nicht getestet
Bitte warten ..
Mitglied: Kinkerlitzchen
26.10.2012, aktualisiert um 13:53 Uhr
Danke für das freundliche Willkommen und eure Antworten bastla und andimue.

Problem gelöst, vielen Dank.

zu:
"1. muss ich jetzt zu jedem gefundenen "Trainingsname" etwas eingeben, statt einmal für alle!"

Da habt ihr natürlich recht. Die Eingabe erfolgt jetzt vor der Schleife. Ziemlich doofer Fehler

zu:
"2. Wird mein Text nicht eingefügt."

Da hatte ich einfach hinter der eingesetzten Variablen das ! vergessen..


@andimue
das ist doch dann aber ein anderer Weg, oder? Dann setze ich einen Text an das Ende der Zeilen statt etwas zu ersetzen und habe dann "Trainingsname=das Eingegebene" da stehen. Es funktioniert bei mir so:
01.
set text=%%a%EINGABE%
Grüße Kinkerlitzchen
Bitte warten ..
Mitglied: andimue
26.10.2012 um 14:19 Uhr
Hi Kinkerlitzchen,

du hast natürlich Recht. Ich hab übersehen, das du "Trainingsname" ersetzen willst.
Sorry

Schönes Wochenende und setzt deine Frage doch noch bitte auf "Gelöst"
Bitte warten ..
Mitglied: Kinkerlitzchen
26.10.2012 um 17:38 Uhr
Alles Klar! Vielen Dank nochmal.

Grüße Kinkerlitzchen
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren

gelöst Frage von Manuel1234Batch & Shell9 Kommentare

Hallo zusammen! Ich bin neu hier und freue mich auf die Gesellschaft. In meiner Frage geht es um eine ...

Batch & Shell

Batch - Ordnerstruktur ändern und Daten verschieben

Frage von DeeJayBeeBatch & Shell3 Kommentare

Hallo zusammen, ich habe da 2 Anliegen, die mit Batch zu tun haben. Zum Einen möchte ich in eine ...

Batch & Shell

Maximale Größe zu verarbeitender txt-Dateien mit Batch

Frage von Muck1303Batch & Shell5 Kommentare

Hallo zusammen, ich habe vor einigen Tagen begonnen mich in Batch einzuarbeiten und bin ein Neuling hier. Mein Ziel ...

Batch & Shell

Dateinamen mehrere Dateien ändern mit batch oder vbs Skript

gelöst Frage von Doktore1Batch & Shell3 Kommentare

Hi frohes neues erstmal. Ich würde gerne alle Dateien in ein Ordner umbenennen. Und zwar ein Teil des Dateinamen. ...

Neue Wissensbeiträge
CMS
Erneut kritische Zero-Day-Lücke in Drupal
Tipp von Reini82 vor 2 StundenCMS

Laut einem Bericht auf t3n gibt es eine Schwere Sicherheitslücke in Drupal die auch schon ausgenutzt wird. Betroffen sind ...

Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 22 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

Windows Server
Alten DC entfernen
gelöst Frage von smartinoWindows Server27 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung25 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...