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

Eintrag in der Umgebungsvariable Path löschen

Frage Entwicklung Batch & Shell

Mitglied: ahe

ahe (Level 1) - Jetzt verbinden

30.10.2007, aktualisiert 31.10.2007, 17750 Aufrufe, 4 Kommentare

Löschen eines Pfadeintrages aus der Umgebungsvariablen Path während eines Batchlaufs.

Hallo,

ich habe da ein Problem mit dem Löschen eines Eintrages in der Umgebungsvariablen Path während des Batchlaufs.

Dieses Löschen des Pfades ist Teil einer Deinstallationsroutine, die ein gewisser Softwarehersteller (nicht MS) vermurxt hat. Es werden nur ein paar Dateien und Registry-Einträge gelöscht, die Pfade, Umgebungsvariablen und weiteren störenden Verzeichnisse, Dateien und Registry-Einträge bleiben allerdings bestehen. Bei einer Aktualisierung müssen die genannten Dinge aber alle verschwinden, da die Anwendung ansonsten nicht korrekt instaliert wird bzw. dann zwei ggfs. verschiedene Suchpfade vorhanden sind!

Vorab: (Windows XP SP2)
Es ist kein Problem einen Pfadeintrag mit Hilfe der Tools setx.exe oder pathman.exe (aus den Windows RescourcKits oder Support Tools) zu löschen, z. B. mit:
pathman.exe /rs c:\gnuffz\murks; (ich ziehe pathman setx vor...)

Bei diesen Tools wird die Systemvariable dauerhaft in der Registry geändert, ist allerdings erst beim nächsten Start der Konsole aktiv.

Registry-Zweig:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Name: Path
Typ: Reg_SZ
Wert: c:\windows; c:\windows\sytem32;c:\gnuffz\murks;C:\WINDOWS\System32\Wbem; ...

Der gesuchte Pfad ist dabei als Variable Home_Dir der Anwendung ebenfalls gesetzt und kann daher auch als Parameter für pathman verwendet werden:
pathman.exe /rs %Home_Dir%\murks;

Jetzt zum eigentlichen Problem:
Mit Hilfe des folgenden Befehls schreibe ich den Inhalt der Pfadvariablen (path) ohne den misliebigen Eintrag c:\gnuffz\murks in eine Datei test.txt.
echo %path:c:\gnuffz\murks=% >test.txt

Dies funktioniert soweit, aber... ich möchte dies natürlich mit meinem Parameter von oben machen: %Home_Dir% (der Installationspfad ist manchmal etwas unterschiedlich... "c:\" oder "c:\program files" oder "c:\programme" oder ... )
Wenn es denn 'mal klappt, dann möchte ich die Datei auslesen und den Inhalt als neue Pfadvariable path setzen z. B. mit:
for /f %%i in ('type test.txt') do set path=%%i

Die folgenden Zeilen funktionieren alle nicht!
echo %path:%Home_Dir%\murks=% >test.txt
Ergebnis in test.txt:
%path:c:\gnuffz\murks=%

echo %path:!%Home_Dir%!\murks=% >test.txt
Ergebnis in test.txt: (der Eintrag wird nicht gelöscht!)
c:\windows; c:\windows\sytem32;c:\gnuffz\murks;C:\WINDOWS\System32\Wbem; ...

echo %path:!Home_Dir!\murks=% >test.txt
Ergebnis in test.txt: (der Eintrag wird nicht gelöscht!)
c:\windows; c:\windows\sytem32;c:\gnuffz\murks;C:\WINDOWS\System32\Wbem; ...

Vielleicht habt Ihr ja noch eine Idee, irgendetwas machei ich mit der "verzögerten Variablenexpansion" falsch...

(Schön wäre am Schluss noch, wenn es auch kein überschüssiges Semikolon mehr da wäre... aber das ist nur Kosmetik...)


mfg
Axel
Mitglied: Biber
30.10.2007 um 22:06 Uhr
Moin ahe,

noch zwei Versuche mehr, dann hättest Du es herausbekommen...

So herum fünktioniert es (bei mir am CMD-Prompt) schön sichtbar:
01.
>@echo !path:%homedir%=@@@@@@@@@@@@@@@@@@@@!
Entsprechend in Deinem Batch mit...
01.
@echo off & Setlocal EnableDelayedExpansion 
02.
..... 
03.
:: .... und eigentlich dieselbe Zeile, also ohne mehr % oder !....  
04.
echo !path:%homedir%\Murks=@@@@@@@@@@@@@@@@@@@@! 
05.
pause 
06.
...
Sollte dieses bei Dir klappen, dann kannst Du als "scharfe" Zeile
Set Path=!path:%homedir%\Murks=!
...in Deine Batchdatei schreiben...ohne dieses Hin- und her in die Txtdatei.
Und vorher evtl alle ";;" durch ";" ersetzen...
Set Path=%path:;;=;%

That's all.

Okay, aber für ein zeilenweises Ausgeben der Einzelpfade in %PATH% hätte ich zur Not auch eine Lösung. *gg

Grüße
Biber
Bitte warten ..
Mitglied: ahe
30.10.2007 um 23:18 Uhr
Danke Biber für deine Mühe, aber leider funktioniert es (an meinem Rechner) nicht...

Ich habe die folgende Zeile eingegeben (vorher set Mypath=%path%, damit nix kaputt geht )
path=c:\windows; c:\windows\sytem32;c:\gnuffz\murks;C:\WINDOWS\System32\Wbem;

>@echo !Mypath:%homedir%=@@@@@@@@@@@@@@@@@@@@!

Das Ergebnis ist allerdings:

!Mypath:c:\gnuffz=@@@@@@@@@@@@@@@@@@@@!

anstelle von:
c:\windows; c:\windows\sytem32;\murks;C:\WINDOWS\System32\Wbem;
(also ohne c:\gnuffz)

Ich habe mir daraufhin noch eine Batch nach deinen obigen Zeilen gebastelt (dieses Mal auch mit Setlocal EnableDelayedExpansion ), aber ohne Erfolg...

Ich denke ich probiere es morgen früh noch einmal an meinem Testrechner mit meinen Testdaten und meld' mich dann noch 'mal...

Erst einmal, gute Nacht.
Axel
Bitte warten ..
Mitglied: Biber
31.10.2007 um 09:32 Uhr
Moin ahe,

ähhem...ja. Das Testen mit %MyPath% statt mit %Path% ist natürlich äußerst empfehlenswert.
Hätte ich vielleicht auch gestern erwähnen sollen...

Ich habe es eben noch mal probiert - bei mir tut es reproduzierbar.
01.
>set mypath=path=c:\windows; c:\windows\sytem32;c:\gnuffz\murks;C:\WINDOWS\System32\Wbem; 
02.
 
03.
(= 9:26:53  D:\temp=) 
04.
>set murx=c:\gnuffz\murks 
05.
 
06.
(= 9:27:51  D:\temp=) 
07.
>@echo !mypath:%murx%=! 
08.
path=c:\windows; c:\windows\sytem32;;C:\WINDOWS\System32\Wbem;
Gruß
Biber
Bitte warten ..
Mitglied: ahe
31.10.2007 um 10:03 Uhr
Hallo Biber,

ich habe jetzt auf meinem Testrechner Folgendes gemacht:

01.
@echo off & Setlocal EnableDelayedExpansion 
02.
 
03.
set homedir=c:\gnuffy 
04.
set oldpath=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\gnuffy\Murks; 
05.
 
06.
echo !oldpath:%homedir%\Murks=@@@@@@@@@@@@@@@@@@@@! 
07.
 
08.
Set oldpath=!oldpath:%homedir%\Murks=!
Ergebnis:
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;@@@
@@@@@@@@@@@@@@@@@;...

Ich habe etwas gebraucht, bis mir auffiel, dass ich die Variable %homedir% im Setting Home_Dir genannt hatte und darum immer das Folgende, falsche Ergebnis hatte:
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\gnuffy@@@
@@@@@@@@@@@@@@@@@;...

Ich werde jetzt erst einmal die Zeilen in mein komplettes Sript übernehmen und sehen, was passiert.

Noch einmal, vielen Dank, für deine geduldige Hilfe.

mfg
Axel
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Umgebungsvariable "PATH" für eine Anwendung anpassen (7)

Frage von enno zum Thema Batch & Shell ...

Batch & Shell
gelöst Bash Umgebungsvariable PATH Splitten (1)

Frage von Marabunta zum Thema Batch & Shell ...

Batch & Shell
gelöst Umgebungsvariablen mit PowerShell anpassen - Problem (5)

Frage von speedy26gonzales zum Thema Batch & Shell ...

Microsoft
Registry Einträge Löschen (Skript) (4)

Frage von Shnuuu zum Thema Microsoft ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (25)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (11)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Outlook & Mail
Outlook Suche liefert kein Ergebnise mehr (6)

Frage von Bjoern-B zum Thema Outlook & Mail ...

Windows Server
gelöst "Kiosk"System für Demoversion und neue Versionen einer Anwendung (6)

Frage von kpieper zum Thema Windows Server ...