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, 2975 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
Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Windows 10
Dell M6700 Windows 10 TPM Besitzerkennwort ändern

Frage von Torsten2010 zum Thema Windows 10 ...

VB for Applications
Anpassungsdatei verschiedene Parameter (Hostname, SQL, Registry) ändern (3)

Frage von MiMa89 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Hardware
Laptop ins Salzwasser gefallen (18)

Frage von Marcel94 zum Thema Hardware ...

Switche und Hubs
LAG zwischen Cisco SG300 und Dlink DGS1100 herstellen - wie? (13)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Hardware
Lenovo Yoga 500 über angeschlossene USB Tastatur booten (13)

Frage von thomasreischer zum Thema Hardware ...

CPU, RAM, Mainboards
Hardware Fragen (12)

Frage von xaver-2 zum Thema CPU, RAM, Mainboards ...