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, 2972 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
gelöst Mittels Batch alle .txt Dateien eines Verzeichnises ändern (10)

Frage von mttspeedy zum Thema Batch & Shell ...

Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

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

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

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

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

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...