Top-Themen

Aktuelle Themen (A bis Z)

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.

Mitglied: 91183

91183 (Level 1)

10.06.2010 um 22:05 Uhr, 11492 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 ..
Ähnliche Inhalte
Batch & Shell

Batch: Webseiten Verknüpfungen erstellen

gelöst Frage von bud5890Batch & Shell2 Kommentare

Guten morgen zusammen, wie kann ich per Batch eine Webseiten-Verknüpfung (z.Bwebsite) auf dem Desktop erstellen ? Danke und Viele ...

Batch & Shell

USB-Stick mit Batch Datei erkennen

gelöst Frage von derCreeperBatch & Shell8 Kommentare

Ich habe ein Batch Programm entwickelt, welches dateien wenn ich es starte auf einen USB-Stick lädt. Alles schön und ...

Windows 10

Automatisiert batch-Dateien erstellen

Frage von ScripterWindows 101 Kommentar

Hallo, bei Win 10 ist es möglich über Verknüpfungen im Startmenü mithilfe der Assistentin Cortana PROGRAMME per Sprachsteuerung zu ...

Batch & Shell

Batch-Datei erstellen

gelöst Frage von tocksickBatch & Shell2 Kommentare

Hallo liebe Gemeinde! Ich bin dabei eine Batch-Datei zu schreiben welche folgendes tun soll: Die Batch soll alle auf ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 22 StundenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 1 TagCPU, RAM, Mainboards6 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 1 TagRouter & Routing7 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

LAN, WAN, Wireless
100m+ Leitungslänge Ethernet
gelöst Frage von Ex0r2k16LAN, WAN, Wireless16 Kommentare

Guten Morgen zusammen, ich habe eine Netzwerkdose die die 100m Leitungslänge bis zum Switch knackt. Damit die Verbindung einigermaßen ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör16 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...