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

Verknüpfung mit Batch-Datei erstellen - Ziellaufwerk automatisch erkennen.

Frage Entwicklung Batch & Shell

Mitglied: 91183

91183 (Level 1)

10.06.2010 um 22:05 Uhr, 10793 Aufrufe, 7 Kommentare

Hallo zusammen!

Ich habe vor kurzem meine Portablen Apps auf meinem USB-Stick aktualisiert.
Hierbei sind einige Programme hinzugekommen, sodass der ganze Spaß doch
recht unübersichtlich geworden ist. Daraufhin habe ich mir eine Batch-Datei
mit einem Auswahlmenü (Menü.bat) geschrieben, welche mir das Suchen bzw. hunderte
Verknüpfungen auf dem Desktop erspart (diese funktioniert auch einwandfrei).
Da ich die Apps nicht nur auf dem USB-Stick sondern auch auf einer CD brauche,
habe ich für die CD kurzerhand noch eine Autorun.inf geschrieben, die die Batch-Datei
gleich beim einlegen startet und zusätzlich für spätere Aufgaben noch eine Verknüpfung
zur der Datei „Menü.bat“ herstellt.

Habe dann versucht über Google Infos zu erhalten, wie man so etwas aufbaut und bin auch
beim folgenden Thread recht schnell fündig geworden.

http://www.administrator.de/index.php?content=72240

Die Idee mit dem temporären VBScript fand ich sehr gut. Allerdings habe ich noch ein paar
Probleme, da ich mich noch nicht allzu sehr mit VBscripten beschäftigt habe.

- Die Batchdatei soll vor dem erstellen überprüfen, ob bereits eine gleichnamige
Verknüpfung auf dem Desktop vorhanden ist und fragen bevor sie diese ersetzt.
Bin mir dabei nicht sicher, ob der Befehl in das temp. Script selbst gehört oder davor.

- Das temp. Script müsste (zumindest im Falle der CD) auf der Harddisk erstellt
werden. Wobei ich glaube, dass das auch in dem Beispiel schon richtig sein müsste.

- Der Verknüpfung müsste ein bestimmtes Icon (welches auf der CD ist) beim Erstellen
zugewiesen werden.

- Die Batchdatei müsste das Ziel der zu erstellenden Verknüpfung selber erkennen.
Soll heißen, wenn das CD- / DVD-Laufwerk den Buchstaben E hat, muss die Verknüpfung
das Ziel „E:\Menü.bat“ haben. Wenn das Laufwerk den Buchstaben F trägt ………..
Ist glaube ich klar, was ich meine.


Ich denke mal das letzte Problem dürfte wohl das schwierigste sein.
Hoffe Ihr könnt mir da weiterhelfen.

Gruß
Xeno
Mitglied: bastla
10.06.2010 um 22:22 Uhr
Hallo Xeno-- und willkommen im Forum!

Etwas für Dich zum Testen (ich hab's nämlich nicht gemacht ):
01.
@echo off & setlocal 
02.
 
03.
::Falls das Symbol auf den Desktop soll: 
04.
set "zielpfad=%userprofile%\Desktop" 
05.
 
06.
::Name der Verknüpfung (ohne ".lnk") 
07.
set "progtitel=Menue" 
08.
::Icon-Datei 
09.
set "icon=Menue.ico" 
10.
::Speicherort der Programmdatei (wird auch für "Ausführen in:" verwendet) 
11.
::ist Rootverzeichnis des Laufwerkes, von dem der Batch gestartet wurde 
12.
set "progdir=%~d0" 
13.
set "progexe=Menue.bat" 
14.
::Kommentar 
15.
set "beschreibung=Erklaerung eigentlich unnoetig ..." 
16.
 
17.
::Bei Bedarf Speicherordner der Verknüpfung erstellen (siehe oben "zielpfad") 
18.
::(eigentlich nicht nötig, sollte aber auch nicht schaden): 
19.
md "%zielpfad%" 2>nul 
20.
if not exist "%zielpfad%\%progtitel%.lnk" goto :Neu 
21.
set /p Eingabe=Es gibt bereits eine Verknuepfung "%progtitel%" auf dem Desktop - ersetzen (J/N)? 
22.
if /i "%Eingabe:~,1%" neq "j" (echo Es wird keine Verknuepfung erstellt! & pause & goto :eof) 
23.
 
24.
:Neu 
25.
::temporäres VBScript erzeugen ... 
26.
echo Set objShell=WScript.CreateObject("Wscript.Shell")>%temp%\MakeShortCut.vbs 
27.
echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk")>>%temp%\MakeShortCut.vbs 
28.
echo objShortcut.TargetPath="%progdir%\%progexe%">>%temp%\MakeShortCut.vbs 
29.
echo objShortcut.Description="%beschreibung%">>%temp%\MakeShortCut.vbs 
30.
echo objShortcut.WorkingDirectory="%progdir%">>%temp%\MakeShortCut.vbs 
31.
echo objShortcut.IconLocation="%progdir%\%icon%,0">>%temp%\MakeShortCut.vbs 
32.
echo objShortcut.Save>>%temp%\MakeShortCut.vbs 
33.
 
34.
::... ausführen ... 
35.
cscript //nologo %temp%\MakeShortCut.vbs 
36.
 
37.
::... und wieder löschen. 
38.
del %temp%\MakeShortCut.vbs
Bitte beachten: Es ist in einem Batch einfacher ohne Umlaute - deshalb habe ich oben auch "Menue" in den Dateinamen verwendet ...

Außerdem habe ich vorausgesetzt, dass die "Menue"-Dateien, wie angekündigt, im Root-Verzeichnis liegen (also zB "E:\Menue.bat").

Grüße
bastla

P.S.: Heutzutage wirst Du vermutlich für die Ausführung der "autorun.inf" auf das Prinzip "Hoffnung" setzen müssen ...
Bitte warten ..
Mitglied: 60730
10.06.2010 um 22:30 Uhr
Moin,
Zitat von 91183:
Hallo zusammen!
- Die Batchdatei soll vor dem erstellen überprüfen, ob bereits eine gleichnamige
Verknüpfung auf dem Desktop vorhanden ist und fragen bevor sie diese ersetzt.
Bin mir dabei nicht sicher, ob der Befehl in das temp. Script selbst gehört oder davor.

probiers doch aus - die Zeile kannst du doch sowohl als auch - schadet ja nicht, denn "nach" dem installieren kann man auch nachschauen, ob die Datei erzeugt wude
.
01.
if exist %userprofile%\Desktop\meine.lnk" echo ist schon da
- Die Batchdatei müsste das Ziel der zu erstellenden Verknüpfung selber erkennen.
Soll heißen, wenn das CD- / DVD-Laufwerk den Buchstaben E hat, muss die Verknüpfung
das Ziel „E:\Menü.bat“ haben. Wenn das Laufwerk den Buchstaben F trägt ………..
Ist glaube ich klar, was ich meine.

01.
echo dein aktuelles Laufwerk ist %cd% 
02.
echo %cd% |find "%systemdrive%" && echo die batch läuft auf der Festplatte 
03.
pause
Rest - (eigentlich auch diese Schnippsel) findest du auch hier.
Gruß

Edit el Maestro ist ja viel schneller und wie üblich ausführlicher gewesen.../edit
Bitte warten ..
Mitglied: bastla
10.06.2010 um 22:36 Uhr
@Timo
Auch wenn's hier auf das annähernd gleiche Ergebnis hinauslaufen sollte - %cd% bezieht sich auf den aktuellen Pfad; um den Speicherort des Batches zu finden, steht %0 mit den Möglichkeiten
%~d0  = Laufwerk 
%~dp0 = Laufwerk mit Pfad und abschließendem "\" 
%~f0  = Vollständiger Pfad inkl. Dateiname und Erweiterung
zur Verfügung.

Grüße
bastla
Bitte warten ..
Mitglied: 60730
10.06.2010 um 22:43 Uhr
@bastla - schon klar, aber irgendwann hatt ich mal ein anotobak System und das konnte nur %cd%.
IMHo WInblows 9x oder sowas, das kannte den ganze Tüddelkram, der hinter...

Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:

steht nicht - ich mein es war 9x - aber bei dem Wetter arbeitet das feuchte Brötchen zwischen meinen Ohren auch nur auf Lowlevel

Gruß

nö - zur Feier des tages und weil du auch immer mehrere Grüße schickst..

Grüzi zurück
Bitte warten ..
Mitglied: bastla
10.06.2010 um 22:47 Uhr
[OT]
@Timo
Brötchen bleiben bei mir nicht lange genug zwischen den Ohren, um dort feucht zu werden ...
Mit 9x liegst Du jedenfalls richtig (und danke, dass Du die darauf folgende Katastrophe nicht erwähnt hast ).

Noch ein paar Grüße mehr
bastla
[/OT]
Bitte warten ..
Mitglied: 91183
11.06.2010 um 00:28 Uhr
Hallo noch mal!

Erst einmal: DANKE!!!!!!!!!!!!!!!!!!!!
Die Antworten kamen ja mal richtig schnell und alles funktioniert super. .-)

@bastla:
Mit der Aussage über die Autorundatei hattest Du Recht. Die funktioniert
nicht so gut. Das Icon wird zwar übernommen aber mit „autorun“ ist nicht viel.
Hast Du da vll. noch einen Vorschlag, wie ich das mit dem automatischen Starten
hinbekomme?

Ach so, bevor ich es vergesse. Was muss ich in dem Script ändern, damit er ein
anderes Icon benutzt? Sprich, eines aus der shell32.dll bzw. aus einem anderen Verzeichnis.

Ansonsten zeigt die Verknüpfung auf dem Desktop das Symbol nicht an, wenn keine CD
eingelegt ist. Ist zwar nicht so wichtig aber es sieht besser aus. Und ja, ich stell mich manchmal etwas an .-)

Ich hatte mir gedacht, dass man evt. die Icondatei von de CD in den Ordner Eigene Dateien
oder einen anderen auf der HDD kopieren könnte und dann die Verknüpfung mit dem Symbol
verbinden kann. Also über „%USERPROFILE%\Eigene Dateien\“ oder so.
Allerdings bin ich mir nicht sicher, ob ich für das verschieben eine extra Batchdatei anlegen
muss oder man das ins VBScript aufnehmen kann.

Danke noch mal!
Gruß
Xeno
Bitte warten ..
Mitglied: bastla
11.06.2010 um 00:44 Uhr
Hallo Xeno--!

Beim Thema "Autostart" sehe ich eher schwarz ...
Das Icon wird in den Zeilen 9 bzw 31 festgelegt - um "shell32.dll" zu verwenden könntest Du die Zeile 31 auf
echo objShortcut.IconLocation="%SystemRoot%\System32\shell32.dll,0">>%temp%\MakeShortCut.vbs
ändern - die 0 musst Du selbst gegen die Nummer des gewünschten Icons austauschen.

Um ein eigenes Icon vorweg zu kopieren, könntest Du zwischen Zeile 24 und 25 einfügen:
copy "%progdir%\%icon%" "%userprofile%"
und dann die folgende Zeile 31 verwenden:
echo objShortcut.IconLocation="%userprofile%\%icon%,0">>%temp%\MakeShortCut.vbs
Das VBScript ist eigentlich immer nur für das eigentlich Erstellen der Verknüpfung auf Basis der festgelegten Werte / Variablen zuständig ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...