FileFindFirst - Seite 2

 
lippmaje:

Du legst einen Link im 'Files' Ordner im Common Verzeichnis an, indem Du eine Shell (Command) öffnest und dort den mklink Befehl eingibst, z.B.:

Im Mql dann diesen Aufruf verwenden:

Das Common Verzeichnis geht am leichtesten mit dem Editor zu öffnen - im File Menü oder Ctrl-Shift-D.

Dieser Lösungsweg ist geradezu genial!

Ich hab das in eine cmd Datei reingeschrieben und es funktioniert prächtig, man muss das cmd aber als Administrator ausführen.

Genaue Anleitung zu 'mklink' ist hier https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/mklink

mklink /d C:\Users\Otto\AppData\Roaming\MetaQuotes\Terminal\FE0E65DDB0B7B40DE125080872C34D61\MQL5\files\templates C:\Users\Otto\AppData\Roaming\MetaQuotes\Terminal\FE0E65DDB0B7B40DE125080872C34D61\MQL5\Profiles\Templates
pause

Eine 'pause' Anweissung zur Kontrolle angehängt, die kommt wenn's läuft natürlich weg.

In der Registry kann man das ganze dann einfügen, das geht so: https://support.microsoft.com/de-at/help/2647300

Es besteht aber auch dort das Problem mit den Rechten.

Hast du da eine Lösung?

mklink
mklink
  • 2017.10.16
  • coreyp-at-msft
  • docs.microsoft.com
Windows Commands topic for **** -
 

Ich bin von einer falschen Annahme ausgegangen. Windows merkt sich auch über einen Systemneustart hinweg diese symbolische Verknüpfung.

Also nichts in der Registry 'herumfummeln', ist nicht erforderlich.

@lippmaje: trotzdem wäre es gut zu wissen wie ich ein cmd in der Registry->run mit den erforderlichen rechten starten kann, du kennst dich da offensichtlich gut aus.

 

Ich verwende für mklink das mausbenienbare LinkShell: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

Bin sehr zufrieden und muss mich nicht mit den div. Parametern 'rumschlagen, nehme immer die 'Junction'.

Link Shell Extension
  • schinagl.priv.at
Version 4.0.0.0 Complete support for UNC path in any Smart Move/Copy/Clone & Delorean Operation. Lots of little fixes/improvements, I always wanted to do, but never had the time to. Version 3.9.3.1 Fixed crash when username was > 20 chars as non-admin during symbolic link drop. Link ShellExtension now maintains its...
 
Carl Schreiber:

Ich verwende für mklink das mausbenienbare LinkShell: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html

Bin sehr zufrieden und muss mich nicht mit den div. Parametern 'rumschlagen, nehme immer die 'Junction'.

Danke für diese wertvolle Info. Ist auch gut dokumentiert!
 

@Otto,

nachdem du schin gespielt hast, kannst du mir sagen wie ich das implementieren kann?

 
amando:

@Otto,

nachdem du schin gespielt hast, kannst du mir sagen wie ich das implementieren kann?

Das versteh ich jetzt aber nicht. Hast onehin alle Info bekommen!
 
Otto Pauser:
Das versteh ich jetzt aber nicht. Hast onehin alle Info bekommen!

Ganz versteh ich das noch nicht,ich hab ein cmd file erzeugt

Darin steht

mklink /d C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\73B7A2420D6397DFF9014A20F1201F97\MQL5\Profiles\Templates C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\73B7A2420D6397DFF9014A20F1201F97\MQL5\Profiles\Templates


Wie bei Otto beschrieben,

aber wie mache ich jetzt die verlinkung das er die datei ausführt,


der Aufruf im script

string filename;
  FileFindFirst("Templates/*.tpl",filename,FILE_COMMON);
  Print("found: ",filename); // --> found: ADX.tpl
 

Sagt ja nicht welche datei er ausführen soll


Edit: der fehler lag in der cmd

die hab ich falsch geschrieben


so gehts,

hier der inhalt der cmd

mklink /d Templates C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\73B7A2420D6397DFF9014A20F1201F97\MQL5\Profiles\Templates 
Pause


Und hier der testcode


 Print( FileIsExist( "cmdfortemplate.cmd",FILE_COMMON ));
 
  int handle =FileOpen( "cmdfortemplate.cmd",FILE_COMMON );
 Print(handle);
  string filename;
  FileFindFirst("Templates/*.tpl",filename,FILE_COMMON);
  Print("found: ",filename); // --> found: ADX.tpl
 
 
mklink /d C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\FE0E65DDB0B7B40DE125080872C34D61\MQL5\files\templates C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\FE0E65DDB0B7B40DE125080872C34D61\MQL5\Profiles\Templates
pause

So muss es lauten. Die pause ist zum kontrollieren ob es auch richtig ausgeführt wurde.

Diese cmd musst du nur einmal von windows aus aufrufen. Wichtig: als administrator ausführen.

Wenn alles klappt, ist der Ordner dupliziert. Achtung: was du in einem Ordner löscht oder veränderst, löscht oder verändert sich auch im anderen Ordner.

Jetzt muss es aber gelingen!

 
Otto Pauser:

So muss es lauten. Die pause ist zum kontrollieren ob es auch richtig ausgeführt wurde.

Diese cmd musst du nur einmal von windows aus aufrufen. Wichtig: als administrator ausführen.

Wenn alles klappt, ist der Ordner dupliziert. Achtung: was du in einem Ordner löscht oder veränderst, löscht oder verändert sich auch im anderen Ordner.

Jetzt muss es aber gelingen!

Bei meiner version kann ich es über file open ausführen und es wird nur eine Verknüpfung erstellt, das ist noch schöner für mich

 

@Otto

Das Problem mit den Rechten stellte sich bei mir nicht, da ich Administrator bin. Du könntest Deinem User ja Admin-Rechte geben.


@Amando

Den Link brauchst Du nur einmal anlegen, er bleibt auch nach dem Booten erhalten.

Grund der Beschwerde: