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

Aus TXT bestimmte zeilen ändern

Frage Entwicklung Batch & Shell

Mitglied: djhanf

djhanf (Level 1) - Jetzt verbinden

12.09.2010, aktualisiert 19:51 Uhr, 2982 Aufrufe, 9 Kommentare

Hi

Hab ne frage und zwar habe ich eine txt datei die so aussieht.


Time
Time
mediaserver
mediaserver
Time
Victoria
merlin
merlin
admin

Ich hab jetzt zwei möglichkeiten mein probelm zu lösen

1 ich baue in mein programm eine bedingugn ein die heißt

wenn in zeile 1 " time" steht muss als variable %null% ausgegeben werden.

oder ich tu in das programm einen befehl zur änderung der txt rein der mir automatisch das wort von

" time" >> "%null%" ändert
vor dem time steht ein leerzeichen.

ich glaube variante 2 is besser für mich da ich eh schon eine txt auswertung davor am laufen habe.

hoffe ihr versteht mich
Mitglied: bastla
12.09.2010 um 20:38 Uhr
Hallo djhanf!

Bis Du Dich endgültig entschieden hast (und unter der Annahme, dass Du mit " time" die im Beispiel oben angeführte Zeile "Time" - aber eben mit führendem Leerzeichen - meinst), ein Vorschlag für Variante 1:
01.
@echo off & setlocal 
02.
:: 
03.
:: 
04.
set /p Zeile=<1.txt 
05.
if /i "%Zeile%"==" time" echo %null%
Soll " time" aber tatsächlich nur in Kleinbuchstaben erkannt werden, das "if" ohne "/i" verwenden, und falls es auch nach dem Wort noch (ev sogar eine unbekannte Anzahl von) Leerzeichen geben könnte, als Zeile 3
echo "%Zeile%"|findstr /b /c:"\" time">nul && echo %null%
einsetzen ...

[Edit] Da lt obigem Muster in den Zeilen keine Anführungszeichen vorkommen, auf die Schreibweise des Vergleiches mit Anführungszeichen geändert [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: djhanf
12.09.2010 um 20:49 Uhr
Hi sags ungerne aber

@echo off & setlocal
set /p Zeile=<pw.txt
if /i "%Zeile%"==" time" echo %null%

Funktioniert bei mir nicht.

txt sieht immernoch gleich aus also " Time" ändert sich nicht

Edit::.. Also "leerzeichenTime" ist immer so es wird nicht 1 leerzeichen mehr oder weniger sein
Bitte warten ..
Mitglied: bastla
12.09.2010 um 20:53 Uhr
Hallo djhanf!

Ich sag's auch nur ungern - aber Du wolltest %null% ausgeben, und mein Vorschlag bezog sich auf Deine Variante 1 ...

Wenn's also nun wirklich Version 2 sein soll, dann eben:
01.
@echo off & setlocal 
02.
:: 
03.
:: 
04.
set "Datei=pw.txt" 
05.
 
06.
set "DateiTemp=%temp%\Eine.tmp" 
07.
set /p Zeile=<"%Datei%" 
08.
copy "%Datei%" "%DateiTemp%">nul 
09.
if /i "%Zeile%"==" time" ( 
10.
    echo\%null% 
11.
    more +1 "%DateiTemp%" 
12.
)>"%Datei%" 
13.
del "%DateiTemp%"
[Edit] Zeile 9 an Dein "Edit" angepasst - und um Groß-/Kleinschreibung kannst Du Dich ja selbst kümmern bzw brauchst es in dieser Fassung nicht [/Edit]
[Edit2] Vorgangsweise noch etwas abgewandelt [/Edit2]

Sinnvoller wäre allerdings, den ganzen Zauber zu überspringen, wenn keine Änderung erforderlich ist, also etwa:
01.
@echo off & setlocal 
02.
:: 
03.
:: 
04.
set "Datei=pw.txt" 
05.
 
06.
set /p Zeile=<"%Datei%" 
07.
if /i "%Zeile%" neq " time" goto :Weiter 
08.
 
09.
set "DateiTemp=%temp%\Eine.tmp" 
10.
copy "%Datei%" "%DateiTemp%">nul 
11.
echo\%null%>"%Datei%" 
12.
more +1 "%DateiTemp%">>"%Datei%" 
13.
del "%DateiTemp%" 
14.
 
15.
:Weiter 
16.
:: 
17.
::
Grüße
bastla
Bitte warten ..
Mitglied: djhanf
12.09.2010 um 21:10 Uhr
@echo off & setlocal
set "Datei=pw.txt"
set /p Zeile=<"%Datei%"

copy "%Datei%" "Eine.tmp">nul
if /i "%Zeile%"==" Time" (echo %null% more +1 "Eine.tmp")>"%Datei%"
del "Eine.tmp"

Also irgendwie will das nicht so.

Gibt mir immer gleiche datei aus.

hab das %temp% rauß genommen weil die datein alle im gleichen ordner liegen
Bitte warten ..
Mitglied: bastla
12.09.2010 um 21:14 Uhr
Hallo djhanf!

So geht's natürlich auch - aber nur, wenn Du auch beide Befehle in der Klammer ausführst, also:
if /i "%Zeile%"==" Time" (echo %null% & more +1 "Eine.tmp")>"%Datei%"
Außerdem sollte Deine Variable %null% einen Inhalt haben (falls sie leer ist, kann mit "echo\%null%" eine Leerzeile erzeugt werden) ...

Grüße
bastla

P.S.: Wir hätten da eine passende Formatierung für gepostete Batches ...
Bitte warten ..
Mitglied: djhanf
12.09.2010 um 21:21 Uhr
%null% soll keine variable sein sonder die ausgabe vieleicht liegts daran
Bitte warten ..
Mitglied: bastla
12.09.2010 um 21:26 Uhr
Hallo djhanf!

Dann musst Du in einem Batch dafür aber
echo %%null%%
schreiben - ansonsten sollte das aber mit der vorhin geposteten Zeile schon funktionieren (tut's zumindest bei mir, wenn in der ersten Zeile tatsächlich " Time" - mit einem Leerzeichen davor und nix dahinter - steht) ...

Grüße
bastla

P.S.: Auch mit dem Batch weiter oben geht's ...
Bitte warten ..
Mitglied: djhanf
12.09.2010 um 21:33 Uhr
jetzt muss ich mich entschludigen..
du hast das stichwort genannt 1 zeile.
und zwar das mit der 1 zeile nur bei variante 1 aber in variante zwei meine ich suchen in jeder zeile der txt
Bitte warten ..
Mitglied: bastla
12.09.2010 um 21:42 Uhr
Hallo djhanf!

Wenn ich Dich jetzt (endlich) richtig verstehe, soll also aus
 Time 
Time 
mediaserver 
mediaserver 
 Time 
Victoria 
merlin 
merlin 
admin
dann
%null% 
Time 
mediaserver 
mediaserver 
%null% 
Victoria 
merlin 
merlin 
admin
werden? In diesem Fall dann eher so:
01.
@echo off & setlocal 
02.
set "Datei=pw.txt" 
03.
 
04.
set "DateiTemp=%temp%\Eine.tmp"  
05.
move "%Datei%" "%DateiTemp%">nul  
06.
for /f "usebackq delims=" %%i in ("%DateiTemp%") do set "Zeile=%%i" & call :ProcessLine 
07.
del "%DateiTemp%" 
08.
goto :eof 
09.
 
10.
:ProcessLine 
11.
if /i "%Zeile%"==" Time" ( 
12.
    >>"%Datei%" echo %%null%% 
13.
) else ( 
14.
    >>"%Datei%" echo %Zeile% 
15.
16.
goto :eof
wobei sich die Zeilen 11 - 15 auch kompakter schreiben lassen:
(if /i "%Zeile%"==" Time" (echo %%null%%) else (echo %Zeile%))>>"%Datei%"
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
gelöst Zeilen in TXT mit Leerzeichen auf eine bestimmte Länge auffüllen (4)

Frage von stingray14k zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Daten aus CSV per Windows BATCH Datei in .txt Format schreiben lassen. (9)

Frage von freshman2017 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(5)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (19)

Frage von SarekHL zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...