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

Per echo Command eine bestimmte zeile überschreiben ?

Frage Entwicklung Batch & Shell

Mitglied: Cynix01

Cynix01 (Level 1) - Jetzt verbinden

29.04.2009, aktualisiert 18.10.2012, 13166 Aufrufe, 12 Kommentare

Hallo ich komme leider nicht weiter auch nicht durch googlen deshalb wend ich mich an dieses Forum hier, würde mich freuen wenn mir jemand helfen kann.

Hallo erst mal an alle. Ich suche nach eine Lösung wie ich in einer Datei die bereits vorhanden ist mit mehreren text zeilen, nur eine bestimmte zeile zu löschen und aktualiesieren also anfangs sieht sie z.B. die datei "test.txt" wie gefolgt aus:

text-zeile 1
text-zeile 2
text-zeile 3
text-zeile n
.
.
.usw....

so nun will ich n'te zeile oder z.B. als absoluter wert zeile 3 ("Beispielsweise") mit einem anderen text überschreiben(aber eben nur diese zeile die anderen sollen davon nicht betroffen sein) irgendwie per echo text>>c:\test.txt, so erstellt man aber eben nur eine neue zeile, wie kann man dass anpassen, brauch man dafür ein ganzes script ? Und wenn ja wie realisier ich dass ?

Würde mich über antworten freuen.

mfg Cynix01
Mitglied: Biber
29.04.2009 um 08:24 Uhr
Moin Cynix01,

willkommen im Forum.
Mit den Möglichkeiten der CMD.exe kannst Du -zumindest physisch- nicht in einer Textdatei editieren.
Du kannst letzten Endes entweder eine Datei lesen, eine Datei neu schreiben oder an das Ende einer vorhandenen Datei etwas anfügen.
Alle "logischen" Operationen wie Löschen, Ersetzen, Einfügen müssen entsprechend diesen Restriktionen erfolgen.

In Deinem Fall wäre also eine mögliche Strategie (wenn es denn partout mit dem Werkzeug CMD.exe erfolgen muss):
  • Lese die ursprüngliche Textdatei Alt.txt komplett Zeile für Zeile mit einer FOR/F-Anweisung
  • Vergleiche jede Zeile mit dem Suchkriterium
  • Wenn ungleich Suchwert -> schreibe die gelesene Zeile aus Alt.txt in eine neue Datei Neu.txt
  • Wenn gleich Suchwert -> schreibe eine neue Zeile nach Deinen Vorstellungen in Datei Neu.txt
  • Wenn fertig mit dem Zeilen-Lesen: Ersetze (überschreibe) Datei Alt.txt mit Neu.txt

Beispiele dazu findest Du über die Forumssuche mit "Suchen ersetzen Batch".

Grüße
Biber
Bitte warten ..
Mitglied: LotPings
29.04.2009 um 11:10 Uhr
Moin Biber,

hört sich wirklich nach einer Übungsaufgabe an

vielleicht noch zu ergänzen das man bei einer bestimmten Zeilennummer eben die Zeilen zählen muss, entweder
  • innerhalb Im Do-Teil der for /f Schleife (Hat den Nachteil das leere Zeilen von For /f ignoriert werden und man Subroutine/DelayedExpansion braucht) oder
  • indem man For /f eine numerierte Datei übergibt mit find /v/ /n "" <Datei.txt

Gruß
LotPings
Bitte warten ..
Mitglied: Cynix01
29.04.2009 um 11:31 Uhr
Hi Biber,

Danke für deine info ich werd mal in Dem thread per Suche schauen nur ich wusste ned wie ich suchen soll, also eben ich wäre nie auf den Suchbegriff "Suchen ersetzen Batch" gekommen. weil ich wusste ja ned mal wie dass Theoritisch zu realisieren wäre.
Jetzt anhand deinen Punkten weiss ich es(die grobe umsetzung).

mfg Cynix01
Bitte warten ..
Mitglied: Cynix01
29.04.2009, aktualisiert 18.10.2012
Hi Biber,

Habe nun auch mal nach anderen beiträgen gesucht, bin auf folgenden gestoßen:

http://www.administrator.de/forum/per-batch-zeile-mit-bestimmtem-wort-l ... damit wäre es theoritisch realisierbar, wenn ich " n1=" (siehe beitrag) z.B. in zeile 2 ändere um in zeile 3 die ich in dem script dann auch anpasse um sie vorher temporär zu löschen um die 3. zeile dann zu ersetzen? Oder lieg ich da falsch ?


mfg Cynix01
Bitte warten ..
Mitglied: LotPings
29.04.2009, aktualisiert 18.10.2012
Zitat von Cynix01:
Habe nun auch mal nach anderen beiträgen gesucht, bin auf folgenden gestoßen:

http://www.administrator.de/forum/per-batch-zeile-mit-bestimmtem-wort-l ... damit wäre es theoritisch realisierbar, wenn ich " n1=" (siehe beitrag) z.B. in zeile 2 ändere um in zeile 3 die ich in dem script dann auch anpasse um sie vorher temporär zu löschen um die 3. zeile dann zu ersetzen? Oder lieg ich da falsch ?
Ja
Das 2-teilige Beispiel ist so nicht anwendbar.

01.
@echo off 
02.
set In=Input.txt 
03.
set Out=output.txt 
04.
set Line=3 
05.
set NewText=Neuer Text 
06.
 
07.
Type Nul >%Out% 
08.
for /f "tokens=1* delims=[]" %%A in ( 
09.
  'find /V /N "" ^<%In%' 
10.
) do if %%A==%Line% ( 
11.
>>%Out% echo/%NewText% 
12.
) else ( 
13.
>>%Out% echo/%%B 
14.
)
Zum Veranschaulichen was im Batch passiert, schau dir mal in einem Cmd Fenster die Ausgabe an von:
find /V /B "" <BeliebigeDatei.txt

Gruß
LotPings
[EDIT]Zeile 11 und 13 geändert! [/Edit]
Bitte warten ..
Mitglied: Cynix01
29.04.2009 um 13:04 Uhr
Hey Danke LotPings,

ich muss mich mal wohl mehr mit Batch anweisungen befreunden aber is im Prinzip ja wohl ned schwerer als irgendwelche if/else for/do while anweisungen in C/Java zu machen, nur die syntax is etwas anders, was bedeutet denn z.B. "%%" vor eine variablen ?
%Variable% dass is mir klar nur %%Variable ? Ich glaub ich leg mir maln gutes buch zu batch scripting an, könntet ihr mir ein gutes empfehlen ? Ich weiss man kann sich dass auch alles im Netz zusammenkratzen, mir ist aber ein buch in der Hand lieber, aber es sollte dann auch alles gut und ausführlich von jedem etwas behandelt werden.

mfg Cynix01
Bitte warten ..
Mitglied: Cynix01
29.04.2009 um 14:26 Uhr
Hab noch 1 Hürde die ich nicht meister, ich will die Batch noch per echo commands erstellen
jedoch klappt dass z.B. mit folgenden zeichen nicht so wie ich will ich shcreib mal dein script hin und mach mal comments wie z.B. in C

echo set In=Input.txt>c:\script.bat
echo set Out=output.txt>>c:\script.bat
echo set Line=3>>c:\script.bat
set NewText=Neuer Text>>script.bat
echo Type Nul >%Out%>>c:\script.bat hier schon das erste syntax problem wegen >
echo for /f "tokens=1* delims=[]" %%A in (>>c:\script.bat
hier soweit alles klar
echo 'find /V /N "" ^<%In%'>>c:\script.bat hier ^ dieses zeichen wird auch ein syntax fehler
echo ) do if %%A==%Line% (>>c:\script.bat
echo >>%Out% echo/%NewText% >>c:\script.bat
Syntax prob wieder wegen > bzw. >>
echo ) else (>>c:\script.bat
echo >>%Out% echo/%%B >>c:\script.bat wieder syntax wegen >>
echo ) >>c:\script.bat
start c:\script.bat
wegen all den syntax fehlern um das script file per echo zu erstellen geht hier beim starten des scriptes auch alles schief

also ich will eig. wirklich mal alles versuchen per cmd hinzukriegen ohne nen texteditor wo man das script copy paste hinschmettern kann.
Ich hoffe mal da gibt es ne Lösung das syntax technisch umzusetzen (eben nur per cmd lines ohne editor)

mfg Cynix01
Bitte warten ..
Mitglied: LotPings
29.04.2009 um 15:35 Uhr
Zitat von Cynix01:
was
bedeutet denn z.B. "%%" vor eine variablen ? %Variable% dass is mir klar nur %%Variable ?
Schleifenvariablen sind direkt auf der Kommandozeile mit einfachem %a, und in einer Batchdatei mit doppeltem %%a zu benutzen. siehe: For /?

Ich glaub ich leg mir maln gutes buch zu batch scripting an, könntet ihr mir ein gutes empfehlen ?
Ich weiss man kann sich dass auch alles im Netz zusammenkratzen, mir ist aber ein buch in der Hand lieber, aber es sollte dann auch alles gut und ausführlich von jedem etwas behandelt werden.

Leider gibts da nicht viele. Da ich von der ersten DOS Version (eigentlich CP/M) dabei bin, hab ich nie eins gefunden das zu meinem jeweiligen Wissensstand gepasst hätte.
Bitte warten ..
Mitglied: LotPings
29.04.2009 um 15:46 Uhr
Der einfachste Weg, auf der Kommandozeile einen Textaus der Zwischenablage in eine Datei zu packen ist über
(Es sollten aber der QuickEdit- und Einfügemodus in den Fenstereigenschaften aktiviert sein.):

Copy con DeinBatch.cmd[Enter]
[rechte Maustaste]
[STRG-Z oder F6][Enter]

Wenn du mit echo Befehlen arbeiten willst, musst du verhindern das IO-Umleitungen Pipes etc direkt interpretiert werden, Anstatt als Befehl in die Ausgabedatei geschrieben zu werden.
Dieses Escapen kannst du mit einem Caret ^ direkt vor dem Zeichen machen (funktioniert übrigens auch mit einem Zeilenumbruch)

Gruß
LotPings
Bitte warten ..
Mitglied: torch88
28.07.2009, aktualisiert 18.10.2012
habe zu diesem code noch ne frage:

Zitat von LotPings:
> Zitat von Cynix01:
> Habe nun auch mal nach anderen beiträgen gesucht, bin auf
folgenden gestoßen:
>
> http://www.administrator.de/forum/per-batch-zeile-mit-bestimmtem-wort-l ... damit
wäre es theoritisch realisierbar, wenn ich " n1="
(siehe beitrag) z.B. in zeile 2 ändere um in zeile 3 die ich in
dem script dann auch anpasse um sie vorher temporär zu
löschen um die 3. zeile dann zu ersetzen? Oder lieg ich da
falsch ?
Ja
Das 2-teilige Beispiel ist so nicht anwendbar.

01.
> @echo off 
02.
> set In=Input.txt 
03.
> set Out=output.txt 
04.
> set Line=3 
05.
> set NewText=Neuer Text 
06.
>  
07.
> Type Nul >%Out% 
08.
> for /f "tokens=1* delims=[]" %%A in ( 
09.
>   'find /V /N "" ^<%In%' 
10.
> ) do if %%A==%Line% ( 
11.
> >>%Out% echo/%NewText% 
12.
> ) else ( 
13.
> >>%Out% echo/%%B 
14.
> ) 
15.
> 
Zum Veranschaulichen was im Batch passiert, schau dir mal in einem
Cmd Fenster die Ausgabe an von:
find /V /B "" <BeliebigeDatei.txt

Gruß
LotPings
[EDIT]Zeile 11 und 13 geändert! [/Edit]


und zwar: funktioniert (fast) perfekt, ABER:

habe in der zu bearbeitenden datei [ ] als zeichen und diese werden in der zu bearbeitenden datei zwingend benötigt.

jetzt löscht mir aber das skript die gesamten [ und die ] bleiben stehen.

wofür wird also delims=[]" genau verwendet? setzt die beiden klammern als delims, also trennzeichen ein, oder? aber ich habe es mit zeichen versucht, die nicht in der datei vorkommen, mit dem ergebnis, dass die ausgabedatei leer ist... jemand einen lösungsvorschlag?

gruß torch
Bitte warten ..
Mitglied: bastla
28.07.2009 um 20:52 Uhr
Hallo torch88!

Völlig ungetestet:
01.
@echo off & setlocal 
02.
set In=Input.txt 
03.
set Out=output.txt 
04.
set Line=3 
05.
set NewText=Neuer Text 
06.
  
07.
Type Nul >%Out% 
08.
for /f "tokens=1* delims=:" %%A in ('findstr /N "^" "%In%"') do if %%A==%Line% (>>%Out% echo/%NewText%) else (>>%Out% echo/%%B)
Grüße
bastla
Bitte warten ..
Mitglied: torch88
28.07.2009 um 22:51 Uhr
Hi bastla!

Probier ich gleich aus

Gruß torch

EDIT:

Muss mich nochmals bei dir bedanken, funktioniert!

Nur aus reinem Interesse, ich versteh nämlich nicht genau, was bei dem alten Script das delims=[] bewirkt, ganz normal die beiden Zeichen als Trennzeichen definieren oder ist das ein spezieller Befehl?

Ebenso blick ich die ' in beiden Quelltexten nicht ganz.

Schöne Grüße, torch
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Zeile für Zeile auslesen und jede Zeile eine bestimmte Variable zuweisen
gelöst Frage von CerauxBatch & Shell4 Kommentare

Hallo, ich habe schon überall gesucht und noch nichts gefunden wie man Zeilen bestimme Variablen zuweist. Zum Beispiel: file.txt: ...

Batch & Shell
Bestimmte Zeilen einer Datei addieren - Linux
gelöst Frage von lapvikaBatch & Shell2 Kommentare

Hallo zusammen, ich habe eine Datei die wie folgt aussieht: 536870912 - System1_2 536870912 - System1_3 536870912 - System1_4 ...

PHP
PHP: Wert nur in bestimmter Zeile erhöhen
gelöst Frage von Sven32PHP7 Kommentare

Hallo Zusammen, ich habe mir ein kleines Script gebastelt, dass mir in einer Textdatei die als Datenbank fungiert einen ...

Batch & Shell
Sed - Zeile mit bestimmten Anfang löschen
gelöst Frage von PanubuBatch & Shell2 Kommentare

Hallo zusammen, ich habe schon mal ein wenig mit sed "herumgespielt" aber noch nicht wirklich zu dem Ergebnis gekommen, ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 11 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 11 StundenSicherheit

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 13 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 18 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...