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, 5975 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
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 ...

Windows Server
Batch Script bei Start ausführen (3)

Frage von KEFHVDI zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...