Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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
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, 6017 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 Batch Datei: ECHO ist ausgeschaltet (OFF) (3)

Frage von twiceface zum Thema Batch & Shell ...

Batch & Shell
gelöst Echo in Batch schreibt vorab eine 1 (1)

Frage von chappy72 zum Thema Batch & Shell ...

Batch & Shell
gelöst Xcopy-script kopiert nur 1 datei? (2)

Frage von f0rml0s zum Thema Batch & Shell ...

Batch & Shell
Batch - ein paar Basics die man kennen sollte (5)

Tipp von Pedant zum Thema Batch & Shell ...

Neue Wissensbeiträge
Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Viren und Trojaner

Neues Botnetz über IoT-Geräte

(5)

Information von certifiedit.net zum Thema Viren und Trojaner ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Heiß diskutierte Inhalte
Windows Installation
Windows 10 neu installieren (17)

Frage von imebro zum Thema Windows Installation ...

Router & Routing
Externe IP von innen erreichbar machen (15)

Frage von Windows10Gegner zum Thema Router & Routing ...

Windows Server
Frage zu Server Rack (11)

Frage von rainergugus zum Thema Windows Server ...