For befehl funzt ned 100% :)
"c:\programme\testeman\meinverzeichnis\123.exe" "%1"
hallo ich versuche den pfad aus der reg heraus zu finden.. der pfad kann sich bei jedem anderen user anders aussehen.. mein problem sind die " zeichen so wie "%1" und zuletzt müsste das 123.exe weg das ich am schluss set pfad=%%o
c:\programme\testeman\meinverzeichnis\
bekomme..
hier mal mein code..
reg query HKEY_CLASSES_ROOT\Applications\123.exe\shell\open\command /ve|find /i "testeman" > %~n0_temp.txt
For /F "tokens=3* delims= : " %%o in ('find "REG_SZ" %~n0_temp.txt') do set nicki=%%o
könnte man diese zeichen per notepad ansteuern und durch suchen ersetzen löschen ??
hallo ich versuche den pfad aus der reg heraus zu finden.. der pfad kann sich bei jedem anderen user anders aussehen.. mein problem sind die " zeichen so wie "%1" und zuletzt müsste das 123.exe weg das ich am schluss set pfad=%%o
c:\programme\testeman\meinverzeichnis\
bekomme..
hier mal mein code..
reg query HKEY_CLASSES_ROOT\Applications\123.exe\shell\open\command /ve|find /i "testeman" > %~n0_temp.txt
For /F "tokens=3* delims= : " %%o in ('find "REG_SZ" %~n0_temp.txt') do set nicki=%%o
könnte man diese zeichen per notepad ansteuern und durch suchen ersetzen löschen ??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 25548
Url: https://administrator.de/forum/for-befehl-funzt-ned-100-25548.html
Ausgedruckt am: 23.12.2024 um 05:12 Uhr
12 Kommentare
Neuester Kommentar
Moin opixantos,
ob das mit Notepad geht, weiß ich nicht... ich würde das schon auf dem Weg machen, den Du vorgezeichnet hast.
Bei Dir sollte (wenn ich das gedanklich nachspiele und wir die gleiche Version von Reg.exe benutzen, folgendes gegeben sein:
(vom CMD-Prompt)
Schritt 0:
Zum Lesbarermachen (am CMD-Prompt oder im Batch)
! REG.EXE VERSION 3.0
HKEY_CLASSES_ROOT\Applications\123.exe\shell\open\command
<NO NAME> REG_SZ "c:\testeman\Pfad mit Leerzeichen\123.exe" "%1"
Schritt 2, immer noch am CMD-Prompt:
Schritt 3, auch am CMD-Prompt, EINE Zeile:
Final Schritt 4 - endgültige Ermittlung des Werts aus der Reg-Zeile im Batch:
for /f "tokens=4" %%o in ('reg query %RegKey% /ve^|find "NO NAME"') do Set "My123Pfad=%%o"
--->Variable My123path hat den Wert "c:\testeman\Pfad mit Leerzeichen\123.exe"
Jetzt nur den Teil "\123.exe" ersetzen durch "Nichts".
set "my123path=%my123path:\123.EXE=%"
Feddich.
Also bleiben folgende im Batch drei Zeilen über:
Set "RegKey=HKEY_CLASSES_ROOT\Applications\123.exe\shell\open\command"
for /f "tokens=4" %%o in ('reg query %RegKey% /ve^|find "NO NAME"') do Set "My123Pfad=%%o"
set "my123path=%my123path:\123.EXE=%"
> in My123path steht jetzt:
That's all.
HTH Biber
P.S. Und sag bitte im Bereich "Batch & Shell" nie "geht ned".
Erstens hieße es "funktioniert nicht" und zweitens gibt es bei Batchen nur ein "funktioniert noch nicht 100%ig". *g
[Edit] Variable %RegKey% in das Beispiel eingebaut [/Edit]
ob das mit Notepad geht, weiß ich nicht... ich würde das schon auf dem Weg machen, den Du vorgezeichnet hast.
Bei Dir sollte (wenn ich das gedanklich nachspiele und wir die gleiche Version von Reg.exe benutzen, folgendes gegeben sein:
(vom CMD-Prompt)
Schritt 0:
Zum Lesbarermachen (am CMD-Prompt oder im Batch)
Set "RegKey=HKEY_CLASSES_ROOT\Applications\123.exe\shell\open\command"
Schritt 1:reg query %RegKey% /ve
! REG.EXE VERSION 3.0
HKEY_CLASSES_ROOT\Applications\123.exe\shell\open\command
<NO NAME> REG_SZ "c:\testeman\Pfad mit Leerzeichen\123.exe" "%1"
Schritt 2, immer noch am CMD-Prompt:
reg query %RegKey% /ve|find "NO NAME"
<NO NAME> REG_SZ "c:\testeman\Pfad mit Leerzeichen\123.exe" "%1"Schritt 3, auch am CMD-Prompt, EINE Zeile:
for /f "tokens=4*" %o in ('reg query %RegKey% /ve^|find "NO NAME"') do @echo %o
"c:\testeman\Pfad mit Leerzeichen\123.exe"Final Schritt 4 - endgültige Ermittlung des Werts aus der Reg-Zeile im Batch:
for /f "tokens=4" %%o in ('reg query %RegKey% /ve^|find "NO NAME"') do Set "My123Pfad=%%o"
--->Variable My123path hat den Wert "c:\testeman\Pfad mit Leerzeichen\123.exe"
Jetzt nur den Teil "\123.exe" ersetzen durch "Nichts".
set "my123path=%my123path:\123.EXE=%"
Feddich.
Also bleiben folgende im Batch drei Zeilen über:
Set "RegKey=HKEY_CLASSES_ROOT\Applications\123.exe\shell\open\command"
for /f "tokens=4" %%o in ('reg query %RegKey% /ve^|find "NO NAME"') do Set "My123Pfad=%%o"
set "my123path=%my123path:\123.EXE=%"
> in My123path steht jetzt:
set my123path
My123path="c:\testeman\Pfad mit Leerzeichen"That's all.
HTH Biber
P.S. Und sag bitte im Bereich "Batch & Shell" nie "geht ned".
Erstens hieße es "funktioniert nicht" und zweitens gibt es bei Batchen nur ein "funktioniert noch nicht 100%ig". *g
[Edit] Variable %RegKey% in das Beispiel eingebaut [/Edit]
Hallo opixantos,
die gleiche Rückmeldung hatte ich schon mal hier im Forum.
Ich kenne es von meinen Bätchen an allen Rechnern, an denen sie laufen nur und ausschließlich das Maskieren von Pipe-Symbolen und Steuerzeichen im Batch mit dem Caret ("^"). Also "^|", wenn ich im Batch einen "Befehl-im-Befehl" habe wie in der FOR-Zeile.
Ohne Caret gibt es bei mir einen Fehler. Unter Win2k, unter XP...immer.
Auch laut den spärlichen M$-Dokumentationen und den paar anderen Batch-Beispielen im Internet dürfte es nur so gehen.
Ich habe nicht die geringste Vermutung, was bei Dir anders sein könnte *kopfkratz*...
Kann ja fast nur ein höchst undokumentierter Reg-Schlüssel sein oder ein absolut irrwitziger Seiteneffekt eines Tastaturtreibers... keine Ahnung.
Behalte ich im Auge ^^.
Gibt es irgendetwas Bemerkenswertes zu Deiner Win-Version? Benutzt Du die "üblichen" deutschen Sprach/Regionseinstellungen?
Grüße
Biber
die gleiche Rückmeldung hatte ich schon mal hier im Forum.
Ich kenne es von meinen Bätchen an allen Rechnern, an denen sie laufen nur und ausschließlich das Maskieren von Pipe-Symbolen und Steuerzeichen im Batch mit dem Caret ("^"). Also "^|", wenn ich im Batch einen "Befehl-im-Befehl" habe wie in der FOR-Zeile.
Ohne Caret gibt es bei mir einen Fehler. Unter Win2k, unter XP...immer.
Auch laut den spärlichen M$-Dokumentationen und den paar anderen Batch-Beispielen im Internet dürfte es nur so gehen.
Ich habe nicht die geringste Vermutung, was bei Dir anders sein könnte *kopfkratz*...
Kann ja fast nur ein höchst undokumentierter Reg-Schlüssel sein oder ein absolut irrwitziger Seiteneffekt eines Tastaturtreibers... keine Ahnung.
Behalte ich im Auge ^^.
Gibt es irgendetwas Bemerkenswertes zu Deiner Win-Version? Benutzt Du die "üblichen" deutschen Sprach/Regionseinstellungen?
Grüße
Biber
Moin opixantos,
würde ich davon abhängig machen, ob die von Dir erzeugten Batches auch bei Deinen Kunden/auf "Standard-Rechnern" laufen sollen.
Wenn ja, sollte es Dir schon wichtig sein, eine "realistische Testumgebung" zu haben.
Nützt Deinen Kunden nichts, wenn Deine Bätche auf Deinem Rechner laufen und bei ihnen nicht.
Umgekehrt solltest Du keinen Sourcecode blind anpassen, der bei Dir so nicht laufen würde.
Wie geschrieben, auf allen Rechnern, mit denen ich mich duze, laufen die Bätche mit der von mir geposteten Syntax. Und diese Syntax steht auch so in der M$-Hilfe.
Mit "ver 5.1" meinst Du so etwas?
C:\Dokumente und Einstellungen\nt>ver
Microsoft Windows XP [Version 5.1.2600] ????
Hmmm... erklärt auch nicht das Phänomen...
lass uns mal die Diskussion über mail weiterführen... ich schick Dir mal eine PN mit einer Mailadresse von mir.
Gruß Biber
würde ich davon abhängig machen, ob die von Dir erzeugten Batches auch bei Deinen Kunden/auf "Standard-Rechnern" laufen sollen.
Wenn ja, sollte es Dir schon wichtig sein, eine "realistische Testumgebung" zu haben.
Nützt Deinen Kunden nichts, wenn Deine Bätche auf Deinem Rechner laufen und bei ihnen nicht.
Umgekehrt solltest Du keinen Sourcecode blind anpassen, der bei Dir so nicht laufen würde.
Wie geschrieben, auf allen Rechnern, mit denen ich mich duze, laufen die Bätche mit der von mir geposteten Syntax. Und diese Syntax steht auch so in der M$-Hilfe.
Mit "ver 5.1" meinst Du so etwas?
C:\Dokumente und Einstellungen\nt>ver
Microsoft Windows XP [Version 5.1.2600] ????
Hmmm... erklärt auch nicht das Phänomen...
lass uns mal die Diskussion über mail weiterführen... ich schick Dir mal eine PN mit einer Mailadresse von mir.
Gruß Biber