Request: Suche Tool/Skript welches automatisch Verknüpfungen erstellt

hier bitte nur *nach* Benutzen der Boardsuche (siehe oben) posten

Moderatoren: Jean, |Gordon|, Moderatoren

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 29.07.08, 15:27

Zielverzeichnis ist in der Inputbox nun standardmäßig Startmenü\PortableApps.
Index.not funktioniert wie das bei Hidden der Fall war. Also Nur der Ordner in dem Index.not enthalten ist wird nicht geparst. Unterordner ohne die Datei schon. Es ist zwar auch anders möglich aber das wäre mit Mehraufwand verbunden...da muss zuerst ein Featurerequest kommen ;)

Icon...mach eins und ich baus ein :D
bin kein Zeichner

Edit: Hab noch was ausgebessert. In der Inputbox sind keine "" notwendig. Bzw es funktioniert mit ihnen nicht ;)
Und Dausicherung zwecks \ am Pfadende eingebaut.

EDIT: Code entfernt...aktueller steht in meinem letzten Post
Zuletzt geändert von Guybrush Threepwood am 29.07.08, 16:01, insgesamt 2-mal geändert.

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 29.07.08, 15:40

Ich bastel schon :D
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 29.07.08, 16:00

INDEX.NOT verhält sich wie vorher. SUBINDEX.NOT wie Index.not + verhindert das Parsen aller Unterordner.
Und wer sich wundert...es sind immer ein paar unnötige Zwischenschritte in meinen Skripten ;)

EDIT: Skript entfernt. Aktuelles siehe weiter hinten.
Zuletzt geändert von Guybrush Threepwood am 29.07.08, 17:46, insgesamt 1-mal geändert.

Benutzeravatar
klsgfx
Mitglied
Beiträge: 56
Registriert: 21.02.07, 20:26

Beitrag von klsgfx » 29.07.08, 16:18

Guybrush Threepwood hat geschrieben:

Code: Alles auswählen

if
 ...
}
INDEX.NOT verhält sich wie vorher. SUBINDEX.NOT wie Index.not + verhindert das Parsen aller Unterordner.
Und wer sich wundert...es sind immer ein paar unnötige Zwischenschritte in meinen Skripten ;)
Ein bisserl was kann der 'Commander' ja auch machen... :mrgreen:
Dein Script kann alles und noch viel mehr. =D>
Damit bin ich raus - :-i
[neid]Sagt mal müsst Ihr alle nicht arbeiten?[/neid]

Gruß,
Klaus

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 29.07.08, 16:20

...und hier ist das Icon (hab es schlicht gehalten und mich an XP orientiert):
http://www.mediafire.com/?slwcoesduyd

Wäre cool, wenn dies gleich auch als Ordnersymbol gesetzt wird.
siehe

http://www.windowspower.de/Anderes-Symb ... r_671.html

Tunte Edit:
aahhh so gehts via Batch:
http://thragor.blogspot.com/2007/03/fol ... icons.html
Zuletzt geändert von Moscha am 29.07.08, 16:23, insgesamt 1-mal geändert.
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 29.07.08, 16:21

klsgfx hat geschrieben:
[neid]Sagt mal müsst Ihr alle nicht arbeiten?[/neid]
Sagen wir mal es ist ein ruhiger Tag ;)
Die Ruhe wird nur durch Mittagessen und Eis essen mit dem Vorgesetzten gestört :D

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 29.07.08, 16:24

Commander dankt und hat einen ruhigen Tag heute...
Also ist "Beschäftigungstherapie" angesagt :D
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
klsgfx
Mitglied
Beiträge: 56
Registriert: 21.02.07, 20:26

Beitrag von klsgfx » 29.07.08, 16:31

Guybrush Threepwood hat geschrieben:Die Ruhe wird nur durch Mittagessen und Eis essen mit dem Vorgesetzten gestört :D
Der Vorgesetzte bin ich selbst - das macht es ja so schwierig.
Moscha hat geschrieben:Commander dankt und hat einen ruhigen Tag heute...
Also ist "Beschäftigungstherapie" angesagt :D
<sigh />

Gruß,
Klaus

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 29.07.08, 16:34

klsgfx hat geschrieben: Der Vorgesetzte bin ich selbst - das macht es ja so schwierig.
Tja das sind die Vorteile des kleinen Rädchens ;)
Die Nachteile brauche ich glaub ich nicht erläutern ;)

Ja...das Icon...Desktop.ini könnt ich mir vorstellen aber ansonsten weiß ich nicht wie man das machen könnte

Edit: Habs schon...Skript folgt.

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 29.07.08, 16:53

Hey Guybrush,

hab die aktuelleste Version deines Skriptes mal getestet.
Also mit der SUBINDEX.NOT ist es so, dass wenn ich Sie in
"C:\Programme.Portable\Firefox Portable" eine SUBINDEX.NOT hinterlege taucht Firefox Portable komplett nicht auf.

Interessant währe es, dass wenn man eine SUBINDEX.NOT in "C:\Programme.Portable\Firefox Portable" hinterlegt zwar die Programme aus "C:\Programme.Portable\Firefox Portable" indiziert werden, jedoch die Unterordner von "C:\Programme.Portable\Firefox Portable" wie z.B. "APPS" ignoriert werden, dann könnte man sich theoretisch die anfängliche INDEX.NOT-Funktion schon fast sparen oder optional halten.
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 29.07.08, 17:19

ACHTUNG: Die Lösung ist sehr primitiv. Das Skript überprüft ob eine Subindex.not im aktuellen Ordner ist. Wenn ja => Parsen, Wenn nein => "Überordner" checken.
Dadurch kannst du aber auch wieder einzelne Ordner "entignorieren"

EDIT: Komplettes Skript mit Icon. Funktioniert übrigens auch kompiliert.

Code: Alles auswählen

if !A_Iscompiled
Menu,tray, icon, USBPROG.ico
if %1%
quelle = %1%
else
	{
	InputBox, quelle , Quelle, Quellverzeichnis eingeben (z.B.: H:\Meine Programme)
	if ErrorLevel
		Exitapp
	}
quelle:=DauSicherung(quelle)
if %2%
startmenü = %2%
else
	{
	InputBox, startmenü, Ziel, Zielverzeichnis eingeben (z.B.: C:\Meine verlinkten Programme),,, ,,, , , %A_StartMenu%\PortableApps
	if ErrorLevel
		Exitapp
	}
startmenü:=DauSicherung(startmenü)

FileCreateDir, %Startmenü%
if A_Iscompiled
	{
	IniWrite, %A_ScriptFullPath%, %Startmenü%\Desktop.ini, .ShellClassInfo, IconFile
	IniWrite, 0, %Startmenü%\Desktop.ini, .ShellClassInfo, IconIndex
	}
else
	{
	IniWrite, %A_ScriptDir%\USBPROG.ico, %Startmenü%\Desktop.ini, .ShellClassInfo, IconFile
	IniWrite, 0, %Startmenü%\Desktop.ini, .ShellClassInfo, IconIndex
	}
FileSetAttrib, +SH, %Startmenü%\Desktop.ini
FileSetAttrib, +S, %Startmenü%
extensions = cmd;exe;bat;com

Loop, parse, extensions,;
	{
	Loop,%quelle%\*.%A_LoopField%,0,1
		{
		SplitPath, A_LoopFileFullPath,,OrigDir
		FileGetAttrib, Attribs , %OrigDir%
		if (instr(Attribs, "H") || Subindex(OrigDir,Quelle)="NoIndex")
			continue
		StringReplace, NewFullpath, A_LoopFileFullPath, %Quelle%, %startmenü%
		StringTrimRight, NewFullpathExtfree, NewFullpath, 4
		SplitPath, NewFullpath,,Directory

		FileCreateDir, %Directory%
		FileCreateShortcut,%A_LoopFileFullPath%,%NewFullpathExtfree%.lnk
		}
	}
	
DauSicherung(Variable)
{
StringRight, help, Variable, 1
if (help="\")
	StringTrimRight, Variable, Variable, 1
return Variable
}

Subindex(Path,Source)
{
helpi=
StringReplace, Folder, Path, %Source%
Stringsplit, Folder, Folder, \
IfExist, %Path%\INDEX.NOT
	return "NoIndex"
IfExist, %Path%\SUBINDEX.NOT
	return "Index"
loop, parse, Folder, \
	{
	helpi.=A_Loopfield "\"
	IfExist, %Source%\%helpi%SUBINDEX.NOT
		return "NoIndex"
	}
return "Index"
}

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 29.07.08, 18:53

Hmm, das mit der "SUBINDEX.NOT" haut noch nicht hin bei mir (die Ordner werden komplett ignoriert).

Aber das Icon wird übernommen ;)
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 29.07.08, 20:05

Komisch...bei mir funktionierts sowohl in der Arbeit als auch zuhause...

Schreib mir mal bitte die Ordnerstruktur bei der es eben nicht funktioniert. Mit meinen Testordnern kann ich auch nicht alles testen ;)

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 29.07.08, 20:42

Halt, ich glaub ich habs! :idea:

Ich hatte das AutoHotKey-Skript kompiliert (wegen Ausführen von der Kommandozeile) und habe AutoIT selbst seit einiger Zeit nicht mehr upgedatet, vielleicht liegt es daran...

Wenn ich die AHK unkompiliert selbst starte funktioniert es!
Ich schaue gleich mal nach, ob ich die neueste Version von AutoHotKey installiert habe...

Tunte Edit:
Ich habe Version "1.0.47.06" installiert (Laut HP die neueste Version vom März 2008)
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 29.07.08, 20:54

...und nun die endgültige Auflösung:

Wenn das Skript zu einer .EXE kompiliert wird, dann muss folgendes gemacht werden:
- Im Compiler die "USBPROG.ICO" als Progamm-Icon einfügen
- Im Quelltext die "USBPROG.ICO" durch "KOMPILIERTES_SCRIPT.EXE" ersetzen und schon funktioniert alles! :mrgreen:
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 29.07.08, 20:55

Zuerst...nicht AutoIt und ahk verwechseln. ich schau mir morgen die Kompilierte nochmal an.

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 29.07.08, 21:24

hatte mich nur verschrieben - hab beides drauf 8)
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 30.07.08, 9:03

Moscha hat geschrieben:...und nun die endgültige Auflösung:

Wenn das Skript zu einer .EXE kompiliert wird, dann muss folgendes gemacht werden:
- Im Compiler die "USBPROG.ICO" als Progamm-Icon einfügen
- Im Quelltext die "USBPROG.ICO" durch "KOMPILIERTES_SCRIPT.EXE" ersetzen und schon funktioniert alles! :mrgreen:
Im Compiler das .Ico als Programm Icon einfügen ... Richtig
Im Quelltext sollte nichts geändert werden müssen. Dafür ist der Code da:

Code: Alles auswählen

if A_Iscompiled
	{
	IniWrite, %A_ScriptFullPath%, %Startmenü%\Desktop.ini, .ShellClassInfo, IconFile
	IniWrite, 0, %Startmenü%\Desktop.ini, .ShellClassInfo, IconIndex
	}
else
	{
	IniWrite, %A_ScriptDir%\USBPROG.ico, %Startmenü%\Desktop.ini, .ShellClassInfo, IconFile
	IniWrite, 0, %Startmenü%\Desktop.ini, .ShellClassInfo, IconIndex
	}
Wundert mich nur das das Icon hier einen Unterschied macht bei der eigentlichen Funktion...

EDIT:
Obiger Code kann übrigens durch folgenden ersetzt werden ;)

Code: Alles auswählen

if A_Iscompiled
	IniWrite, %A_ScriptFullPath%, %Startmenü%\Desktop.ini, .ShellClassInfo, IconFile
else
	IniWrite, %A_ScriptDir%\USBPROG.ico, %Startmenü%\Desktop.ini, .ShellClassInfo, IconFile
IniWrite, 0, %Startmenü%\Desktop.ini, .ShellClassInfo, IconIndex

Benutzeravatar
Moscha
Mitglied
Beiträge: 42
Registriert: 10.10.03, 0:28

Beitrag von Moscha » 30.07.08, 9:10

Oki, danke - werde es gleich mal ausprobieren!



War übrigens auch gerade am Schreiben:

Moin Guybrush!

Ich nutze es jetzt inzwischen im Zusammenspiel mit dem USB Drive Letter Manager und bin richtig begeistert!

Beim Einstecken wird das Skript geladen und die Verknüpfungen im "Startmenü\Programme Portable" erstellt und beim rausziehen des Sticks wird der Ordner mit den Verknüpfungen gelöscht (kleine Batchdatei). Richtig genial!

Ich habe gestern Abend über das "kleine Projekt" dann noch ein bissel nachgedacht, da ich die Grundfunktion halt sehr genial finde und es sich nahtlos in die Windows-Oberfläche einfügt (im Gegensatz zu den div. anderen USB-Stick Startmenüs). Um es endgültig "DAU-Kompatibel" zu machen, wären meiner Meinung nach noch vier Features interessant:

- Oberfläche in der man die "INDEX.NOT" bzw. "SUBINDEX.NOT" erstellen kann (diese sollten dann als versteckte Dateien erstellt werden, ähnlich wie die "Desktop.ini" von Microsoft und vielleicht %PROGRAMMNAME%.SUB und %PROGRAMMNAME%.NOT heissen, damit es einheitlich zu identifizieren ist.)

- Aktivieren von "Autorun" für USB-Sticks.

- Möglichkeit zum automatischen erstellen einer "AUTORUN.INF", damit das Tool beim Einstecken des USB-Sticks automatisch gestartet wird.

- Das Programm als "TSR" im Hintergrund lassen und wenn es merkt, dass der USB-Stick entfernt wurde, dann sollte es das erstellte Verknüpfungsmenü löschen und sich selbst beenden. Dadurch müsste man nicht zwingend den USB Drive Letter Manager auf dem PC haben.

Einen Namen wie z.B. "Link USB Apps" oder so ;) :top:
I'm a troubleshooter - If i see a trouble --> I SHOOT!!!

Benutzeravatar
Guybrush Threepwood
Mitglied
Beiträge: 438
Registriert: 15.06.06, 21:53

Beitrag von Guybrush Threepwood » 30.07.08, 9:28

Moscha hat geschrieben: - Oberfläche in der man die "INDEX.NOT" bzw. "SUBINDEX.NOT" erstellen kann (diese sollten dann als versteckte Dateien erstellt werden, ähnlich wie die "Desktop.ini" von Microsoft und vielleicht %PROGRAMMNAME%.SUB und %PROGRAMMNAME%.NOT heissen, damit es einheitlich zu identifizieren ist.)
Da weiß ich nicht so ganz wie du dir das vorstellst. Prinzipiell ist eine Oberfläche dafür möglich...ob die allerdings praktischer sein wird als per Explorer und Copy&Paste ist fraglich. Muss mal genauer überlegen wie man das machen könnte
Moscha hat geschrieben: - Aktivieren von "Autorun" für USB-Sticks.
Wenn ich das richtig verstehe soll ich den Registry Eintrag verändern damit Windows Allgemein wieder Autostarts durchführt...da bin ich kein Freund von. Möchte nicht unbedingt die Registry verändern.
Moscha hat geschrieben: - Möglichkeit zum automatischen erstellen einer "AUTORUN.INF", damit das Tool beim Einstecken des USB-Sticks automatisch gestartet wird.
Sollte kein Problem sein.
Moscha hat geschrieben: - Das Programm als "TSR" im Hintergrund lassen und wenn es merkt, dass der USB-Stick entfernt wurde, dann sollte es das erstellte Verknüpfungsmenü löschen und sich selbst beenden. Dadurch müsste man nicht zwingend den USB Drive Letter Manager auf dem PC haben.
Ich hab da schon eine Vorstellung wie das funktionieren könnte...muss aber erstmal schauen ob das auch so funktioniert.

Antworten