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
GELÖST

Batch-Datei wird über eine Verknüpfung ausgeführt. Wie den Pfad zu der Verknüpfung ermitteln und dem aufgerufenen Batch übergeben?

Frage Entwicklung Batch & Shell

Mitglied: evinben

evinben (Level 2) - Jetzt verbinden

03.03.2012, aktualisiert 30.04.2012, 9342 Aufrufe, 11 Kommentare

Hier wird nicht der Pfad zu dem Verknüpfungsziel (zu der Verknüpfungsdatei) gesucht, sondern zu der Verknüpfung.

Aufgabe:
Eine Batch-Datei befindet sich in einem Verzeichnis Nr. 1 und eine Verknüpfung zu ihr in einem anderen (z. B. hier Nr. 2).
Diese Batch-Datei wird über die Verknüpfung ausgeführt und der laufende Bach soll nun in der Lage sein zusätzlich zu dem Verzeichnis der Verknüpfung zu wechseln, um dort paar Dateien zu verarbeiten, da deren Pfade in der Batch-Datei nicht "absolut", sondern "relativ" eingetragen sind.
Also um das Vorhaben zu ermöglichen, soll zumindest das Verzeichnis der Verknüpfung oder noch besser der vollständige Pfad zu ihr dem aufgerufenen Batch übergeben werden (bei der letzten Variante könnte der Batch sogar - abhängig von dem Namen der Verknüpfung - mit Bedingungen verarbeitet werden).
Die Große Frage ist nun: Wie den vollständigen Pfad zu der Verknüpfung bzw. nur das Verzeichnis der Verknüpfung dem aufgerufenen Batch übergeben?

Hallo,

wie kann man den Pfad der Verknüpfung selbst ermitteln?
Leider keine gelösten Beiträge konnte ich finden. Geht das wohl wirklich nicht?
Es ist nämlich aus diesem Grund wichtig den Pfad zu der Verknüpfung dem ausgerufenen Batch zu übergeben, da es in verschiedenen Verzeichnisse unterschiedliche Verknüpfungen zur derselben Batch-Datei gibt, der Batch soll allerdings nur das verarbeiten, was in dem Ordner der jeweiligen Verknüpfung liegt.

PS: Klar, dass das Vorhaben auch dann klappt, wenn die berühmte Eigenschaft „Ausführen in“ der jeweiligen Verknüpfung mit dem Pfad ihres Verzeichnisses ergänzt wird, ist aber eine „Weich-Ei"-Methode – unschön und nur als Notlösung zu gebrauchen, da dies bei jeder Verknüpfung manuell angepasst werden muss.

Gruß
evinben
Mitglied: bastla
03.03.2012 um 16:39 Uhr
Hallo evinben!

Die ganz Harten würden da vermutlich %cd% verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
03.03.2012 um 18:28 Uhr
Hallo @bastla!

vielen Dank mit deiner exzellenten Bereitschaft!!!
Mit %CD% habe ich vor dem Posten schon mal probiert und das Verzeichnis der Verknüpfung wird nur dann angezeigt, wenn die Eigenschaft „Ausführen in“ lehr ist. Wenn allerdings eine Verknüpfung zu einer Datei erstellt wird (z. B. rechte Maustaste > Kopieren > Verknüpfung einfügen) dann wir die Eigenschaft „Ausführen in“ automatisch ausgefüllt. D. h. diese muss gelöscht werden, damit %CD% dann den richtigen Verzeichnispfad anzeigt, ansonsten zeigt die Variable den Verzeichnispfad der Verknüpfungsdatei an.

???

Wenn es nicht anders geht - also eine manuelle Nachbearbeitung nicht vermeidbar wäre, muss ich es einfach akzeptieren. Ich dachte mir, dass ihr eventuell wieder ausgefallene Lösungen parat habt ;).

Ansonsten benutze ich den vbs-Code von @Frimler Verknüpfung auf ungültiges Ziel erstellen zur Erstellung einer Verknüpfung. Hmm, was mir gerade jetzt einfällt, da wird die Eigenschaft „Ausführen in“ leider nicht behandelt.
Vielleich hast du eine Idee?

Gruß
evinben.
Bitte warten ..
Mitglied: bastla
03.03.2012 um 21:34 Uhr
Hallo evinben!

Wie jetzt - ich dachte, Du wolltest es ohne "Ausführen in" ...
da wird die Eigenschaft „Ausführen in“ leider nicht behandelt.
Da tust Du Friemler aber unrecht - er hat sehr wohl auch "WorkingDirectory" genannt ...
Wozu soll denn das Ganze dienen? Wenn es darum ginge, einen Batch aus verschiedenen Vezeichnissen aufrufen zu können, müsstest Du die Verknüpfung ja nur einmal erstellen, "Ausführen in" entfernen und könntest dann die .lnk-Datei ja an die gewünschten Orte kopieren ...

Grüße
bastla
Bitte warten ..
Mitglied: evinben
03.03.2012 um 22:14 Uhr
Hallo @bastla,

oh, Entschuldigung. Dann vertausche ich was: welche Methode wäre dann für die Eigenschaft „Ziel“ verantwortlich?

Danke schön

Gruß
evinben.

PS: Ich mache es so, wie du es geschrieben hast. Ich habe nur gehofft, dass der Pfad des Verzeichnisses, in dem die Verknüpfung sich befindet, ausgelesen werden kann, unabhängig von ihren gesetzten Eigenschaften.
Bitte warten ..
Mitglied: bastla
03.03.2012 um 22:19 Uhr
Hallo evinben!

Was in dem von Dir verlinkten Beitrag klingt denn am ehesten nach "Ziel"? (BTW: "TargetPath" ist eine Eigenschaft ("property"), keine Methode.)

Grüße
bastla
Bitte warten ..
Mitglied: evinben
04.03.2012 um 08:31 Uhr
Hallo @bastla,

danke dir, es stimmt. Die Frage war ein Fehler von mir, es fehlt etwas anders:
Heißt es dann, dass „WorkingDirectory“ sowohl die Eigenschaft „Ausführen in:“ als auch den Speicherort der Verknüpfung setzt?
Jetzt wird mir es verständlicher.

Gruß
evinben
Bitte warten ..
Mitglied: bastla
04.03.2012 um 11:32 Uhr
Hallo evinben!

Deine Frage ist mir nicht wirklich klar - der Speicherort wird ja bei der Erstellung des Objekts (per "CreateShortcut") angegeben ...

ZB hier findest Du (unter "Arbeiten mit Verknüpfungen") noch ein paar Infos zum Thema - ansonsten natürlich noch die MS-Doku dazu ...

Grüße
bastla
Bitte warten ..
Mitglied: rubberman
04.03.2012 um 14:15 Uhr
Hallo evinben und bastla.

Ich weiß auch nicht wirklich worauf das hinaus läuft. Ich verstehe das so:
- Ein Batchfile wird über eine Verknüpfung aufgerufen.
- Der Batchcode soll ermitteln, wo die aufrufende Verknüpfung liegt.

Dazu fällt mir leider garnichts ein. Weder die Kommandozeile (%CMDCMDLINE%), noch der Parent-Prozess (über Umwege per WMIC zu finden) sagen irgendetwas darüber aus. Bleibt nur die von evinben so genannte „Weich-Ei"-Methode -- Die Eigenschaft "Ausführen in" leer lassen und fertig. Wurde ja bereits gesagt, dass der Batch dann im Verzeichnis der Verknüpfung ausgeführt wird -- Ergo %cd% beinhaltet dieses Verzeichnis, %~dp0 dagegen den Pfad der Batchdatei. Beides zusammen sollte doch jedwede Probleme lösen, oder?

Grüße
rubberman
Bitte warten ..
Mitglied: evinben
04.03.2012 um 16:12 Uhr
Hallo @bastla

irgendwie war eine Blockade in mir beim Auseinandersetzen mit dem Skript. Stimmt, es ist dumm von mir gewesen, da es in dem von mir angegebenen Link tatsächlich alle angefragten Eigenschaften angegeben waren.

Hallo @rubberman,
ich werde die „Weich-Ei“-Methode einsetzen: Die Verknüpfungen manuell zu erstellen, diese ohne der gesetzten Eigenschaft „Ausführen in“ zu verteilen, damit die Variable %CD% den korrekten Speicherort der Verknüpfung an die Batch-Datei übergeben kann, ist auch eine Lösung.
Zumindest habe ich probiert bessere Wege kennenzulernen. Wenn es aber noch keine Methode gibt den Pfad der Verknüpfung unabhängig von ihren gesetzten Eigenschaften an die verknüpfte Batch-Datei zu übermitteln, dann werde ich es akzeptieren müssen – "schlimm" ist es nicht.

Gruß
evinben
Bitte warten ..
Mitglied: rubberman
04.03.2012 um 18:23 Uhr
Hallo evinben.

Zitat von evinben:
ich werde die „Weich-Ei“-Methode einsetzen: Die Verknüpfungen manuell zu erstellen, diese ohne der gesetzten Eigenschaft „Ausführen in“ zu verteilen, damit die Variable %CD% den korrekten Speicherort der Verknüpfung an die Batch-Datei übergeben kann

Wie bastla bereits angemerkt hat, musst du nicht manuell erstellen, nur weil Eigenschaft „Ausführen in“ ohne Wert bleiben soll.
Du kannst auch explizit einen leeren String übergeben ...
objShortcut.WorkingDirectory = ""
... um auf Friemlers Beispiel zurück zu greifen. Wobei das simple Unterlassen, diese Eigenschaft zu definieren, bereits ausreichen sollte.

Grüße
rubberman
Bitte warten ..
Mitglied: evinben
05.03.2012 um 08:41 Uhr
Hallo rubberman,

da hast du recht. So habe ich es gelost (fast so):
01.
… 
02.
if defined LinkWorkingDirectory		echo objShortcut.WorkingDirectory="%LinkWorkingDirectory%">>%temp%\MakeShortCut.vbs 
03.
Die Eigenschaft “WorkingDirectory” ist für das vbs-Skript nicht zwingend erforderlich. Beim Auslassen funktioniert das Script weiterhin und in “Ausführen in“ der Verknüpfung steht nichts ;).
Danke und Entschuldigung für den etwas verwirrten Beitrag.

Gruß
evinben


edit: der Skript > das Skript
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch Datei wird per Aufgabenplanung nicht ausgeführt (7)

Frage von Corraggiouno zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
Neuere Datei per Batch ausfinding machen (2)

Frage von chattie zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...