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

Batch funktioniert auf einem von 30 Rechnern nicht

Frage Entwicklung Batch & Shell

Mitglied: Peanut

Peanut (Level 1) - Jetzt verbinden

12.01.2006, aktualisiert 15:40 Uhr, 5703 Aufrufe, 12 Kommentare

Windows XP Service Pack 1

Hallo,

zur Verwaltung von ca. 50 Rechnern mit unterschiedlichen Betriebssystemen habe ich einen kleinen Batchablauf geschrieben, der mir die Anmeldedaten der User in eine Datei schreibt.

@echo off
set PFAD="q:\datenaustausch\ip\ip.txt"
for /F "tokens=3,1" %%i in ('ver^|find "Windows"') do set WINVER=%%j
if %WINVER%==XP for /F "tokens=1,*" %%i in ('date/t') do set DATD=%%i
if not %WINVER%==XP for /F "tokens=1,*" %%i in ('date/t') do set DATD=%%j
for /F "tokens=1,*" %%i in ('time/t') do set TIM=%%i
for /F "tokens=1,*" %%i in ('ipconfig^|find "IP-Ad"') do set IP=%%j
for /F "tokens=1,*" %%i in ('ipconfig/all^|find "Host"') do set HOST=%%j
for /F "tokens=1,*" %%i in ('ipconfig/all^|find "Physi"') do set MACADR=%%j
echo %DATD%>>%pfad% : %TIM%>>%pfad% : %username%>>%pfad% : %IP%>>%pfad% : %HOST%>>%pfad% : %MACADR%>>%pfad%

Einer der 30 XP Rechner meldet: "for" ist an dieser Stelle syntaktisch nicht verarbeitbar
Wenn ich die WINVER Variable einzeln setze und den Batch nochmal starte, passiert im cmd-Fenster nichts mehr. Alle anderen Rechner schreiben brav ihre Daten in die Datei.

Hat jemand eine Idee, woran das liegen kann?
Mitglied: 13100
12.01.2006 um 08:52 Uhr
du schreibst was von windows xp sp1, anschliessend von 50 rechnern
mit unterschiedlichen OS, anschliessend beziehst du dich auf 30 XP
rechner, is bissal schwer zu folgen, was da jetz für ein betriebssystem
am problemkind drauf is, bzw. bei den rechnern wo es funktioniert.
Bitte warten ..
Mitglied: Biber
12.01.2006 um 09:06 Uhr
Moin Peanut,

möglicherweise ist bei diesem einen Rechner die (standardmäßig eingeschaltete) "Befehlserweiterung" NICHT aktiv.
Setz mal bitte probeweise die Zeile
Setlocal EnableExtensions
als zweite Zeile ein.

Wenn das das Problem löst, ändere bei diesem Rechner den Wert in der Registry.
~~~
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
....
"EnableExtensions"=dword:00000001
...

HTH Biber
Bitte warten ..
Mitglied: Peanut
12.01.2006 um 09:41 Uhr
Hallo Biber,

vielen Dank für die schnelle Antwort. Ergänzung von "Setlocal EnableExtensions" bringt leider keine Änderung.
In der Registry habe ich alle "EnableExtensions" Einträge geprüft. Alle sind auf "=dword:00000001" gesetzt.


Hallo Angeldust,

Falls die Problembeschreibung unübersichtlich war:
Der Batch wird über ein Anmeldeskript im Netz auf 50 Rechnern ausgeführt. Davon laufen 5 unter NT4 SP6, 15 unter 2000 SP 4 und 30 unter XP SP1. Nur einer der 30 XP Rechner schreibt die Daten nicht in die Datei ip.txt. Egal ob der Batch übers Netz oder lokal gestartet wird: die For-Zeilen scheinen nicht ausgewertet zu werden

Folgende Dateien habe ich bereits ohne Erfolg mit denen eines "funktionierenden" Rechners überschrieben:
c:\windows\system32\config.nt
c:\windows\system32\autoexec.nt
c:\windows\system32\command.com
c:\windows\system32\dosx.exe
c:\windows\system32\mscdexnt.exe
c:\windows\system32\Ntio.sys
c:\windows\system32\Ntdos.sys
c:\windows\system32\Ntvdm.exe
c:\windows\system32\Redir.exe
Gibt es noch mehr DOS-relevante Dateien unter XP?
Bitte warten ..
Mitglied: 13100
12.01.2006 um 09:50 Uhr
bzw. ersetze mal die cmd.exe, die sollte meiner auffassung nach,
den befehl "for" mitbringen.
Bitte warten ..
Mitglied: Biber
12.01.2006 um 09:54 Uhr
Hm, dann wären die nächsten 4 Überprüfungen:
- was kommt denn bei "ver" zurück an diesem Rechner? (bleibt %WINVER% leer?)
- zeigt %comspec% auf "....\CMD.exe" oder (falsch) auf "...Command.com"?
- ist der PATH kaputt - wird "find.exe" nicht gefunden?
- ist das Netzlaufwerk q:\ sicher vorhanden?

Nur sicherheitshalber.. muss irgendwas albernes sein. Sonst poste nochmal ein "Set" von diesem Rechner.

Nächste Eskalationsebene: diesen Batch Zeile für Zeile an dem Rechner per CMD-Line durchkaspern... irgendwo muss ja ein anderer Fehler auftreten als nur "FOR syntaktisch nicht...." , denn das ist IMHO ein Folgefehler.

Gruß Biber
Bitte warten ..
Mitglied: Peanut
12.01.2006 um 10:42 Uhr
Hallo Biber,

vielen Dank für Deine Hilfe.

Die comspec-Variable verwies tatsächlich auf command.com (warum auch immer?).
Bitte warten ..
Mitglied: Biber
12.01.2006 um 10:49 Uhr
@Peanut

Gern geschehen, hat aber Angel schon vor mir gepostet

Biber
Bitte warten ..
Mitglied: Peanut
12.01.2006 um 11:20 Uhr
Hallo Biber,
hallo Angeldust,

mein Dank geht natürlich an Euch beide...

aber vielleicht habe ich den Beitrag von Ageldust falsch verstanden. Denn als ich den Batch lokal im cmd.exe-Fenster ausführte, kam ebenfalls oben genannte Fehlermeldung und die WINVER-Variable blieb leer. Erst die Änderung der Umgebungsvariable in den Systemeigenschaften half.

Jedenfalls bin ich sehr froh, dass die Kiste mit Eurer Hilfe jetzt wieder macht, was ich will.
Bitte warten ..
Mitglied: 13100
12.01.2006 um 11:52 Uhr
jetz will ich aber schon wissen was comspac genau macht
Bitte warten ..
Mitglied: Biber
12.01.2006 um 12:28 Uhr
@Engelsstaub
In der Variable COMSPEC ist festgelegt, welches Programm als Command-Interpreter genutzt wird.
Aufbau: COMSPEC=[Lw:\][Pfad]NameDesCommandInterpreters.ext [Parameter]-->z.B.: "...=c:\Windows\CMD.Exe"
Historische Gründe:
1) In den DOS-Zeiten gab es "nur" die command.com, aber war insofern wichtig, weil beim Booten von Diskette auch eine Kopie des Command-Interpreters auf der Bootdisk nötig war. Aus Performance-Gründen konnte "im laufenden Betrieb", zwischen 2 Dos-Kommandos auf die "schnellere" Command.com auf Festplatte gewechselt werden konnte.
Beim Booten galt: "COMSPEC=A:\Command.com"; schneller war dann "COMSPEC=C:\Dos\Command.com" o.ä.

2) die Laufzeitumgebung der Command.com konnte durch Neu-Setzen von COMSPEC angepasst werden, z.B. wenn (zur Laufzeit) bei komplexeren Batchen mehr Platz für Umgebungsvariablen erforderlich war.

3) die command.com konnte auch durch Freeware-Replacements/"Batch-Enhancer" ersetzt werden, die ein paar Befehle mehr hatten. Auch das "im laufenden Betrieb".

4)
-- Heute:bei den heutigen Windows-Versionen werden 2 Command-Interpreter mitgeliefert
a) die command.com: mehr oder weniger der "DOS 7.0"-Befehlssatz; siehe oben - keine FOR /F..Verarbeitung etc.
Nur aus Kompat-Gründen dabei.
b) die "erweiterte" CMD.exe, die die so genannten "Befehlserweiterungen" mitbringt. Aus nicht klar erkennbaren Gründen lassen sich diese "Befehlserweiterungen" auch abschalten - aber wer das aus welchen Gründen jemals tun sollte, hat M$ (noch) geheimgehalten. (Abschalten=DisableExtensions; Einschalten=EnableExtensions=Standard; Status prüfen=vergessen von M$)

HTH Biber
Bitte warten ..
Mitglied: 13100
12.01.2006 um 14:00 Uhr
1-3) soll dat heissen, wenn ich eine console programmiere (weil mir gerade
sooooo... fad is), dass windows sie dann mittels comspec für alle cmdline-
g'schicht'rln verwenden würde. dat wäre ja grundsätzlich geil, wenn ich
aber daran denke was man damit gegebenenfalls für nen scheiss machen
kann, wird mir übel. ich mag windows, ich mag einstellungsmöglichkeiten,
aber die modularität und möglichkeiten von windows bringt mich auch immer
wieder zum heulen.

4) kenn jetz nich genau den umfang, was hier genau abgeschaltet wird.
könnte aber je nach anwendungsart vielleicht durchaus sinn bringen,
damit man per remoteconsle keine schweinereinen macht. den ein exploit
is immer nur so gut, wie die funktionen die ein os zur verfügung stellt.
Bitte warten ..
Mitglied: Biber
12.01.2006 um 15:40 Uhr
@7203
1-3) soll dat heissen, wenn ich eine console programmiere (weil mir gerade
sooooo... fad is), dass windows sie dann mittels comspec für alle cmdline-
g'schicht'rln verwenden würde. dat wäre ja grundsätzlich geil,
...ja, ist es auch. Den Weg sind VIELE gegangen, für so banale Sachen wie Bereitstellung von @TODAY oder simple Rechenfunktionen oder Programmierkonstrukte wie IF..THEN..ELSE oder SELECT..CASE.
Oder eben auch FOR-Schleifen, die es unterm COMMAND.COM nur in einfachster Form gab.

wenn ich aber daran denke was man damit ...
für nen scheiss machen kann, wird mir übel.
Na, ja... wer von den Youngstern benutzt den überhaupt noch ein Konsolenutility??
Die nehmen eine Klicki-Bunti-Dateisuche mit ###wedelndem Hund, weil sie gar nichts anderes kennen.
Die halten Programme im Handy-Logo-Design für "normal"

ich mag windows,
Perversling!

ich mag einstellungsmöglichkeiten,
aber die modularität
...Du meinst dieses Zusammengestoppelt-Wirkende?
und möglichkeiten von windows bringt mich auch immer
wieder zum heulen.
mitfühlend Taschentuch reicht

4) kenn jetz nich genau den umfang, was hier genau abgeschaltet wird.
Bei ziemlich jedem CMD-Befehl kommt als 5.Hilfezeile:
"Wenn die Befehlserweiterungen aktiviert sind, geht noch..." und dann drei Bildschirmseiten...
Siehe FOR /?; SET /?; MORE /?; CALL /? IF /?....

könnte aber je nach anwendungsart vielleicht durchaus sinn bringen,
Nein. Bzw. "könnte" ja... ich hab noch keinen entdeckt.

damit man per remoteconsle keine schweinereinen macht. den ein exploit
is immer nur so gut, wie die funktionen die ein os zur verfügung stellt.
Nein, das Problem ist umgekehrt. Wenn plötzlich und unerwartet die "erweiterten Funktionalitäten" fehlen oder abgeschaltet sind, laufen deine Login-Skripte nicht mehr.
So waren wir ja in diesem Thread gelandet.


Nochmal zur Missbrauchsmöglichkeit.
Es wäre natürlich möglich, unter dem Namen bzw. dem Etikett "COMSPEC=c:\windows\OTHERCMD.exe" irgendeine Malware zu betreiben.
Aber ebenso und mit weniger Aufwand kannst Du einen Virus oder einen Dialer unter dem Namen Explorer.exe oder FreeCell.exe irgendwo hinstellen.
Oder auch einen Schädling. der Windows.exe oder Win.com heißt..
Da entsteht kein zusätzliches Scheunentor.

Was in der Tat allerdings einige Skript-Kiddies machen:
Diverse Trojaner stellen eine Datei namens "CMD.com" in das %windir%\system32-Verzeichnis.
Diese ruft zuerst ihren Malware-Prozess auf und startet dann die CMD.exe.
*.com-Dateien werden zuerst gesucht, dann gleichnamige *.exe-Dateien.
Wenn also ein User aufruft: "Start" -"Ausführen" "cmd", dann wird dieser Schädling für Extrem-DAUs aktiv.

Erschöpfend behandelt, Angel?

Grüße Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch datei für shutdown von 3x win8.1 basic Rechnern ohne direkten Steuerbefehl!!?? (7)

Frage von TheCollecter zum Thema Batch & Shell ...

Linux
LTSP: PXE Boot funktioniert nicht (16)

Frage von Fenris14 zum Thema Linux ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...