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
GELÖST

Batch Script - Bei echo Umleitung in Datei werden 0 und 1 gelöscht?

Frage Entwicklung Batch & Shell

Mitglied: mrt181

mrt181 (Level 1) - Jetzt verbinden

14.11.2007, aktualisiert 19:15 Uhr, 5983 Aufrufe, 5 Kommentare

Hallo, ich habe folgendes Problem.

wenn ich diese Skript ausführe (scannt die Datei Zeilenweise und ersetzt eine String an einer bestimmten Stelle, überschreibt dann die alte Datei):

01.
set source=%allusersprofile%\Anwendungsdaten\Microsoft\Network\Connections\Pbk 
02.
 
03.
for /F "tokens=*" %%a in ('type "%source%\aventail.pbk"') do (call :replace "%%a") 
04.
 
05.
goto end 
06.
 
07.
:replace 
08.
set line=%~1 
09.
set line=%line:url.de=199.199.199.199% 
10.
echo %line%>>"%source%\aventail_0.pbk" 
11.
goto end2 
12.
 
13.
:end 
14.
move /Y "%source%\aventail_0.pbk" "%source%\aventail.pbk" 
15.
exit 
16.
 
17.
:end2
dann werden in jeder Zeile die mit =1 oder =0 endet, die Zahl gelöscht.

Wenn ich das Skript an dieser Stelle ändere:
01.
echo %line% >>"%source%\aventail_0.pbk"
dann werden alle Zeichen angezeigt aber ich habe ein unerwünschtes Leerzeichen an jedem Zeilenende.

Die Zeichen werden auch nur beim schreiben in die Datei entfernt, wenn ich mir per echo die Zeilen im Terminal anzeigen lasse werden alle Zeichen angezeigt.


bye martin

P.S.: wie kann ich in der for Schleife die Leerzeilen aus der Original-Datei mitnehmen?
Mitglied: miniversum
14.11.2007 um 18:00 Uhr
'Wenn Du die Zeile
echo %line% >>"%source%\aventail_0.pbk"
Durch diese ersetzt:
(echo %line%)1>>"%source%\aventail_0.pbk"
sollte es bei jedem Eintrag gehen.

miniversum
Bitte warten ..
Mitglied: mrt181
14.11.2007 um 18:08 Uhr
Vielen Dank, so funktioniert es.

Warum funktioniert es so? Was bedeutet die 1 hinter der Klammer?

bye martin
Bitte warten ..
Mitglied: miniversum
14.11.2007 um 18:25 Uhr
Ich versuchs mal zu erklären, obwohl ich das nicht gut kann.
Es gibt Zwei Umleitungsmöglichkeiten für eine Ausgabe.
Einmal die Standardausgabe, z.B.
echo bla 1>Datei.txt
und die Ausgabe bei einem Fehler
echo bla 2>Datei.txt

Wird nichts vor der klammer angegeben wird 1 verwendet.
Hast du jetzt aber in der Variable %line% z.B. 1232 stehen wird die letzte 2 als umleiotung für den Fehler interpretiert. nur das bei echo kein Fehler entsteht, und so auch ncihts geschrieben wird.
Indem eine klammer um das echo %line% gemacht wird und danach die umleitung expliziet von 1 in die Datei wird alles was in der Klammer als ausgabe steht umgeleitet.

Ich hoffe das war halbwegs verständlich erklärt. Sorry besser kan ichs nicht.

miniversum
Bitte warten ..
Mitglied: mrt181
14.11.2007 um 18:44 Uhr
jetzt habe ich es verstanden, mit der zahl hinter der klammer sage ich dem echo an welches gerät (std*) der befehl gesendet werden soll, vielen dank für die info.
Bitte warten ..
Mitglied: Biber
14.11.2007 um 19:15 Uhr
Moin mrt181,

willkommen im Forum.

Zu Deiner Hauptfrage ("0,1...4 vor einem Pipe-Symbol wie > oder >>" ):

Die 0 und 1 werden nicht verschluckt, sondern als Quellkanal betrachtet, also als eigentliche "Leitung", auf dem der Text ankommt. Das ist okay so.
Kleiner Trockentest. Eine Zeile am CMD-Prompt und deren Ausgabe:
01.
@echo test mehrtest 1 
02.
test mehrtest 1
So war es geplant und so hat es auch die CMD.exe verstanden.
Wenn ich aber ein Umleitungssymbol dranhänge in eine Datei oder auch nur eine Umleitung auf den Bildschirm (der ja auch der Default ist):
01.
@echo test mehrtest 1>con 
02.
test mehrtest 
03.
@echo test mehrtest 1>test.txt 
04.
type test.txt 
05.
test mehrtest
Upps, die "1" ist verschwunden.
Weil: Die CMD.exe interpretiert "führe den echo-Befehl aus und leite alles, was auf Kanal 1 von diesem Befehl gesendet wird um nach whereever".

Das ist auch okay so. Ehrlich.
Aber so genau wolltest Du es vielleicht gar nicht wissen. Deshalb jetzt die Umgehungsmöglichkeiten:
1) setze explizit an jede Stelle, an der bei dir bisher ">>%meinepbk%" steht ein "1>>%meinepbk%. Sieht Shice aus, aber reicht.
2) Vertrau mir und drehe einfach die Reihenfolge um:
01.
>>"%source%\aventail_0.pbk" echo %line%
Zur Zusatzfrage "Leerzeilen erhalten".
Die FOR /F-Anweisungen "ignorieren" Leerzeilen. No way out.
Aber Du kannst Dafür sorgen, das keine Leerzeilen kommen wenn Du
STATT 'type "%source%\aventail.pbk"'
NEU 'findstr /n . "%source%\aventail.pbk"'
in der Klammer verwendest und die FOR-Anweisung so veränderst:
JETZT:
01.
for /F "tokens=*" %%a in ('type "%source%\aventail.pbk"') do (call :replace "%%a")
NEU:
01.
for /F "delims=: tokens=1,2*" %%a in ('findstr /n . "%source%\aventail.pbk"') do call :replace "%%b"
[ungetestet]

Grüße
Biber
[Edit]
Sorry, nicht gesehen, dass inzwischen schon so viel passiert ist... eine Bekannte hatte kurz angerufen, nachdem ich begonnen hatte, meine Antwort zu schreiben.
[/Edit]
[Edit2] Bullshit. Die Änderung zu 2) sollte so aussehen:
01.
for /F "delims=: tokens=2*" %%a in ('findstr /n . "%source%\aventail.pbk"') do call :replace "%%a" 
02.
... 
03.
:replace 
04.
:: Sonderbehandlung "leerer" Parameter 
05.
If "%~1"=="" ( 
06.
   echo.>>"%source%\aventail_0.pbk" 
07.
 ) ELSE ( 
08.
set line=%~1 
09.
set line=%line:url.de=199.199.199.199% 
10.
>>"%source%\aventail_0.pbk" echo %line% 
11.
12.
goto :eof
[/Edit2]
[Edit3]Ist immer noch alles Unsinn - eine Lösung steht in diesem mrt181-Beitrag[/Edit3]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst In Batch auf Erstelldatum einer Datei prüfen (5)

Frage von AS-N00 zum Thema Batch & Shell ...

Batch & Shell
Script zum XML Datei Umschreiben (12)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
Bash Script soll neue Datei erzeugen (2)

Frage von SpeakerST zum Thema Batch & Shell ...

Batch & Shell
Batch Script Editor - Programmvorstellung des Entwicklers (16)

Tipp von wowItsDoge zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Installation
Eine etwas (wirklich) speziellere Frage: Windows 10-Installation über (16)

Frage von DerFurrer zum Thema Windows Installation ...

Verschlüsselung & Zertifikate
gelöst Festplattenverschlüsselung im Ausland (13)

Frage von Nicolaas zum Thema Verschlüsselung & Zertifikate ...

Multimedia & Zubehör
gelöst Iphone 6 prob (12)

Frage von jensgebken zum Thema Multimedia & Zubehör ...

Festplatten, SSD, Raid
gelöst Fehlerhafte Blöcke im RAID 10 (12)

Frage von Kojak-LE zum Thema Festplatten, SSD, Raid ...