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

For befehl geht ned 100% :)

Frage Entwicklung Batch & Shell

Mitglied: opixantos

opixantos (Level 1) - Jetzt verbinden

09.02.2006, aktualisiert 10.02.2006, 5064 Aufrufe, 12 Kommentare

"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 ??
Mitglied: Biber
09.02.2006 um 09:02 Uhr
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)
>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]
Bitte warten ..
Mitglied: Biber
09.02.2006 um 19:29 Uhr
Thx, opixantos,
für das Editieren Deines Titels...

Ich hab meinen Kommentar auch noch mal editiert und ein bisschen lesbarer gemacht. Würde ich bei meinen eigenen Bätschelchen ja auch so machen wie oben mit der %RegKey%-Variablen.

Schönen Abend noch
Biber
Bitte warten ..
Mitglied: opixantos
09.02.2006 um 19:35 Uhr
hallo biber danke dir.. ich konnte es anpassen so das es geht..
nur leider giebts da einige rätsel für mich

/ve^|find = ging bei mir nicht

/ve|find = ging bei mir dan ohne ^

warum geht das bei dir mit und bei mir nur ohne ?
ist es bei dir wen du es mal ohne ^ machst falsch oder klappts trotzdem ?
Bitte warten ..
Mitglied: Biber
09.02.2006 um 19:49 Uhr
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
Bitte warten ..
Mitglied: opixantos
09.02.2006 um 20:21 Uhr
hmmmm..


eher ein bios update machen ? vermutlich

ver 5.1
Bitte warten ..
Mitglied: Biber
10.02.2006 um 00:16 Uhr
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
Bitte warten ..
Mitglied: opixantos
10.02.2006 um 07:49 Uhr
hallo biber

ich werde dich heute noch per mail kontaktieren.. zuerst muss ich mal richtig bei meiner lieblings bäckerei vorbei gehen und ein gutes morgenessen einnehmen.

ich hab da jetzt ein problem mit pfadleerzeichen

c:\pad leerzeichen\test.exe

nun wen ich start c:\pad leerzeichen\test.exe
mache kommet fehlermeldung c:\pad existiert nicht.. wie kann ich diesen leerzeichen richtig angeben das es den rest auch korrekt ausführt..?

besten dank
Bitte warten ..
Mitglied: opixantos
10.02.2006 um 07:50 Uhr
doppelt
Bitte warten ..
Mitglied: Biber
10.02.2006 um 11:05 Uhr
Lass es Dir schmecken, opixantos....

>>c:\pad leerzeichen\test.exe
Pfade und/oder Dateinamen mit Leerzeichen darin müssen in doppelte Anführungszeichen eingeschlossen sein.
also "c:\pad leerzeichen\test.exe" oder
start /w "c:\pad leerzeichen\test.exe"

Bis später
Biber
Bitte warten ..
Mitglied: opixantos
10.02.2006 um 11:07 Uhr
hallo biber

und wen ich es bei

if exist c:\pad leerzeichen\test.exe goto :ende

benutzen möchte ?
Bitte warten ..
Mitglied: Biber
10.02.2006 um 11:13 Uhr
Dann auch.... *lachtlaut*

if exist "c:\pad leerzeichen\test.exe" goto :ende
Bitte warten ..
Mitglied: opixantos
10.02.2006 um 11:15 Uhr
hm..
ach mannoooooooooooo ich hab den fehler jetzt.. es war ein zeichen & zuviel darum sorry aber nun klapts

big thx
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

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 ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...