Top-Themen

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

Wörter in Echo verschwinden - werden gedreht

Frage Entwicklung Batch & Shell

Mitglied: Snowman25

Snowman25 (Level 3) - Jetzt verbinden

13.04.2010 um 12:31 Uhr, 4603 Aufrufe, 8 Kommentare

Seit wann können Wörter in Echos einfach verschwinden?

Hallo liebe Mit-Administratoren\Administratorinnen,

Irgendetwas mache ich mit meinen Echos falsch.
Siehe hier:
01.
@Echo off 
02.
ipconfig|findstr /I gateway>%TEMP%\temp.ip 
03.
for /F "tokens=2 delims=:" %%P in (%TEMP%\temp.ip) do ( 
04.
	Echo %%P>%TEMP%\alpha.ip 
05.
	for /F "tokens=4 delims=." %%I in (%TEMP%\alpha.ip) do ( 
06.
		if %%I LEQ 2 ( 
07.
			if x%%I==x1 ( 
08.
				netsh -f noproxy.conf 
09.
				Echo noproxy 
10.
11.
			if x%%I==x2 ( 
12.
				netsh -f norm.conf 
13.
				echo norm 
14.
15.
			Echo Gateway 172.18.235.%%I wurde angelegt 
16.
			Echo Tastendruck zum beenden... 
17.
			pause>nul 
18.
		) else ( 
19.
			Echo Falsches Gateway! gefunden: %%P 
20.
			Echo Tastendruck zum beenden... 
21.
			pause>nul 
22.
23.
24.
25.
rem del %TEMP%\temp.ip 
26.
rem del %TEMP%\alpha.ip
Prompt:
U:\batch\netchange>change.bat 
 wurde angelegt235.1 
Tastendruck zum beenden...
Es sind keine Steuerzeichen oder sonstiges im Text.
Wo liegt mein Fehler?

Gruß
Snow
Mitglied: bastla
13.04.2010 um 12:36 Uhr
Hallo Snowman!

Ich würde ja darauf tippen, dass unmittelbar vor dem Umleitungszeichen zB die Ziffer 0 steht - dann wird diese als Angabe des Kanals interpretiert ...

Abhilfe schafft das Voranstellen der Umleitung, also etwa
>>%TEMP%\alpha.ip Echo %%P
(oder auch ein Leerzeichen vor dem ">", was man/frau aber öfters vermeiden möchte).

Grüße
bastla
Bitte warten ..
Mitglied: Snowman25
13.04.2010 um 12:50 Uhr
Zitat von bastla:
Hallo Snowman!

Ich würde ja darauf tippen, dass unmittelbar vor dem Umleitungszeichen zB die Ziffer 0 steht - dann wird diese als Angabe des
Kanals interpretiert ...

Hab mir jetzt die Ausgabe mit Echo on in ein File speichern lassen...
Alle Umleitungen finden auf Kanal 1 statt. Ausserdem würde der Echo dadurch auch nicht so verzogen werden.
Ich bin ratlos...

Gruß
Snow
Bitte warten ..
Mitglied: LotPings
13.04.2010 um 15:08 Uhr
Hallo Snow,

wenn ich das richtig sehe, schreibst du mit der %%P Schleife in eine temp Datei
und mit der inneren %%I Schleife liest du gleichzeitig aus derselben?

Über derartige Seiteneffekte würde ich mich dann aber nicht wundern....

Außerdem sind die expliziten Temp Dateien überflüssig, probier dies mal:
01.
@Echo off 
02.
for /F "tokens=2 delims=:" %%P in ('ipconfig^|findstr /I gateway') do ( 
03.
  Echo.%%P 
04.
  for /F "tokens=4 delims=." %%I in ("%%P") do ( 
05.
    echo.%%I 
06.
    if %%I LEQ 2 ( 
07.
      if x%%I==x1 ( 
08.
        netsh -f noproxy.conf 
09.
        Echo noproxy 
10.
11.
      if x%%I==x2 ( 
12.
        netsh -f norm.conf 
13.
        echo norm 
14.
15.
      Echo Gateway 172.18.235.%%I wurde angelegt 
16.
      Echo Tastendruck zum beenden... 
17.
      pause>nul 
18.
    ) else ( 
19.
      Echo Falsches Gateway! gefunden: %%P 
20.
      Echo Tastendruck zum beenden... 
21.
      pause>nul 
22.
23.
24.
25.
rem del %TEMP%\temp.ip 
26.
rem del %TEMP%\alpha.ip
Gruß
LotPings

Edit: superfluides % entfernt
Bitte warten ..
Mitglied: Snowman25
13.04.2010 um 16:21 Uhr
Hallo LotPings,

in zeile 4 ist zwar noch ein % zuviel (in ("%%P%") do statt in ("%%P") do) aber ansonsten funktioniert diese Version einwandfrei. Trotzdem würde ich jetzt gerne wissen, warum denn die mit den temporären Dateien NICHT funkioniert...

Gruß
Snow
Bitte warten ..
Mitglied: LotPings
13.04.2010 um 16:38 Uhr
Zitat von Snowman25:
Trotzdem würde ich jetzt gerne wissen, warum denn die mit den temporären Dateien NICHT funkioniert...
Naja ich hab zwar die CMD.exe nicht programmiert,
aber ich vemute mal das für manche internen Prozesse wie eben auch For-Schleifen eine sekundärer Cmd.exe geöffnet wird und das zeitliche Verhalten hier nicht exakt spezifiert ist. Während der eine Prozess mit der Ausgabe in die temp-Datei noch beschäftigt ist, liest der andere schon daraus, und hier kommt noch eine Besonderheit dazu: Ipconfig erzeugt als Zeilenwechsel die eher ungewöhnliche Komination 0D 0D 0A = CR CR LF und ich weiß aus Erfahrung das es da öfter hapert.

Außerdem ist es ohne Temp Datei deutlich eleganter/effizienter.

Gruß
LotPings
Bitte warten ..
Mitglied: Snowman25
13.04.2010 um 16:53 Uhr
Zitat von LotPings:
Zitat von Snowman25:
Trotzdem würde ich jetzt gerne wissen, warum denn die mit den temporären Dateien NICHT funkioniert...
Naja ich hab zwar die CMD.exe nicht programmiert,
aber ich vemute mal das für manche internen Prozesse wie eben auch For-Schleifen eine sekundärer Cmd.exe geöffnet
wird und das zeitliche Verhalten hier nicht exakt spezifiert ist. Während der eine Prozess mit der Ausgabe in die temp-Datei
noch beschäftigt ist, liest der andere schon daraus.

Die Dateien passen alle. Auch während der Ausführung.

und hier kommt noch eine Besonderheit dazu: Ipconfig erzeugt als Zeilenwechsel die eher ungewöhnliche Kombination
0D 0D 0A = CR CR LF und ich weiß aus Erfahrung das es da öfter hapert.

Das ist kein Argument, da deine Version dann genausowenig funktionieren dürfte.

Außerdem ist es ohne Temp Datei deutlich eleganter/effizienter.

Effizienz in zusammenhang mit netsh? Das braucht allein für 5 zeilen code (2 davon pushd und popd) schon fast 'ne halbe minute.

Gruß
Snow

EDIT:
Grade bemerkt, dass in %I i-wie ein Zeilenumbruch hineinkommt, der auch als solcher interpretiert wird. Sehr eigenartig, aber jetzt auch egal.
Bitte warten ..
Mitglied: 76109
14.04.2010 um 10:27 Uhr
Hallo Snowman!

Also LotPings hat mit dem Hinweis auf Seiteneffekte beim schreiben/lesen schon Recht.

Wenn man bedenkt, das Festplattenzugriffe im millisekunden- und Codeausführung im nanosekundenbereich abläuft ist das nicht verwunderlich. Hier besteht - außer z.B. mit dem Befehl PAUSE - keine Möglichkeit, dem Command zu sagen, warte bis der Datei-Schreibvorgang abgeschlossen ist.

Wenn per Command ein anderes Programm z.B. Findstr aufgerufen wird, dann wartet Command bis das andere Programm beendet ist (Wait Exit). Bei Lese/Schreibvorgängen auf Festplatte läuft das aber anders ab. Hier wird der Echo-Text in einen Buffer geschrieben und ein Interrupt für den StdOut-Treiber ausgelöst (StdOut-File-Handle 1). Der StdOut-Treiber setzt den Schreibvorgang über Ports an den DMA-Controller ab, der mehrere Kanäle (Ports) für unterschiedliche Aufgaben benutzt. D.h. nachdem der StdOut-Treiber den Schreibvorgang an den DMA-Controller abgesetzt hat, kehrt die Codeausführung zum Command zurück und der Vorgang ist für Ihn erledigt und er hat keine Kenntnis darüber, zu welchem Zeitunkt die Daten auf die Festplatte geschrieben werden. Das obliegt allein dem DMA-Controller, der diese Aufgabe eigenständig im Hintergrund ausführt. Ein ähnliches Spiel läuft beim Lesevorgang über den StdIn-Treiber und einen anderen Kanal des DMA-Controllers ab. Hier wird allerdings logischerweise gewartet bis der StdIn-Treiber (Std-File-Handle 0) die Daten in den Buffer geschrieben hat und die Codeausführung kehrt erst dann zum Command zurück.

So in etwa muss man sich den Ablauf vorstellen.

Gruß Dieter
Bitte warten ..
Mitglied: Snowman25
14.04.2010 um 12:16 Uhr
Hallo didi,

wie schon gesagt: Der Inhalt der Dateien zur Ausführung ist weder korrupt noch unvollständig oder sonstiges.
Wenn ich ein entsprechendes Echo in die erste Zeile der Schleife hänge, muss ich ja genau den Inhalt bekommen, der ansonsten an dieser Stelle verarbeitet werden würde. Und dieser stimmt nun mal. Egal ob die Datei davor vorhanden war oder nicht.

Hauptsache ist, dass das Skript jetzt seinen Zweck erfüllt (auch wenn netsh ein wenig schneller sein könnte ) und so auch funktioniert.
Hatte zwar noch 'nen kleinen Denkfehler drin (siehe Zeile 15) aber der ist inzwischen auch ausradiert.

Gruß
Snow
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Echo test.txt
gelöst Frage von CerauxBatch & Shell2 Kommentare

echo %test% >> test.txt Wie macht man es so, dass beim speichern kein Leerzeichen hinter dem Wort ist: Beispiel: ...

Batch & Shell
Text von zeile mit wort, bis ziele mit wort
gelöst Frage von SaintwolfBatch & Shell5 Kommentare

suche eine Batch die eine txt auswertet inhalt: text a text b text c Fehler fehler in KB4568792 text ...

Batch & Shell
BATCHDATEI - Variable unter "echo" nicht angezeigt
gelöst Frage von TobiBotBatch & Shell4 Kommentare

Hey, ich bin neu hier und habe gleich mal eine Frage: Ich bin Batch-Neuling und arbeite gerade an einem ...

Batch & Shell
Echo date - Variable
gelöst Frage von CerauxBatch & Shell1 Kommentar

Hallo, ich versuche eine Variable in ein Textdokument auszugeben, jedoch will das nicht wirklich funktionieren: Batch: So soll die ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...