in cmd.exe kann man ja in Umgebungsvariablen Text ersetzen
echo %foo:such=ersetz%
Wie geht das, wenn der zu suchende Text '%1' ist (also Prozentzeichen,
Eins), der einzusetzende Text ist %1 (also erster positionaler
Parameter) oder eine Umgebungsvariable? Meine bisherigen Versuche, in
%foo:%1=%1%
mit G�nsef��chen und/oder Caret zu quoten waren bisher nicht von Erfolg
gekr�nt.
Die zu l�sende Aufgabe ist eine Batch zum Starten von Dateien aus der
Shell. Meistens funktioniert der Eingabe des Namens 'foo.doc', aber aus
Gr�nden, die ich noch nicht ganz herausgefunden habe, bringt das
neuerdings gerne "Zugriff verweigert". Daher wollte ich mir mittels
assoc/ftype die Kommandozeile selbst zusammenbauen.
Klar, ein Zwanzigzeiler in C w�re vermutlich auch drin, aber geht es
auch in Batch?
Stefan
> in cmd.exe kann man ja in Umgebungsvariablen Text ersetzen
> echo %foo:such=ersetz%
> Wie geht das, wenn der zu suchende Text '%1' ist (also Prozentzeichen,
> Eins), der einzusetzende Text ist %1 (also erster positionaler
> Parameter) oder eine Umgebungsvariable? Meine bisherigen Versuche, in
> %foo:%1=%1%
> mit G�nsef��chen und/oder Caret zu quoten waren bisher nicht von Erfolg
> gekr�nt.
Beispiel:
C:\> set foo=%%1
C:\> set ersetz=XXX
C:\> echo %foo:%%1%ersetz%
XXX
C:\>
Wolltest du das? Oder habe ich etwas falsch verstanden?
LG, Ferry
--
Ing. Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: ferdinand.bolh...@wien.gv.at
Bei mir bringt das (mit verschiedenen XPs):
C:\>echo %foo:%%1%ersetz%
%foo:%%1XXX
Das Knifflige ist ja auch noch, dass das '%1' �berall stehen oder fehlen
kann.
Stefan
Wie w�re es mit folgendem Befehlsskript (test.cmd):
rem ---
set script_name=%~f0
for /f "tokens=2 delims==" %%A in ('assoc .txt') do set file_type=%%A
for /f "tokens=2 delims==" %%T in ('ftype %file_type%') do set cmd_line=%%T
set cmd_exe_tmp=%cmd_line:~0,-2%
for /f "tokens=*" %%C in ('echo %cmd_exe_tmp%') do set cmd_exe=%%~fC
%cmd_exe% "%script_name%"
rem ---
Dies setzt voraus, dass %1 am Ende der Befehlszeile f�r die Dateizuordnung steht, was meistens der Fall ist.
---
Stefan Pendl
Windows Vista SP2
AMD Turion X2 RM-70 2 GHz
4 GB RAM
Ist sie aber nicht. Die harmlose Variante sind noch ein paar ""
drumherum, die kniffligere sind Sachen wie
FirefoxHTML=C:\PROGRA~1\MOZILL~1\FIREFOX.EXE -url "%1" -requestPending
Ich bin inzwischen bei
:: prog=der String von ftype...
setlocal enabledelayedexpansion
start !prog:%%1=%~f1!
Mal sehen, wo das scheitert... (die Konstruktion !prog ohne 'start'
vorne funktioniert nicht).
Stefan