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, 9485 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst In einer Batch variable die Datei extension ermitteln ? (4)

Frage von Kriegstreiber zum Thema Batch & Shell ...

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

Frage von Corraggiouno zum Thema Batch & Shell ...

Batch & Shell
Per Batch eine XLS-Datei in eine TXT-Datei umwandeln (5)

Frage von skiing69 zum Thema Batch & Shell ...

Entwicklung
gelöst Verzeichnise sichern mit batch datei (Win10) (13)

Frage von Limbach zum Thema Entwicklung ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

KVM

How to: Libvirt Port forwarding

(2)

Anleitung von fundave3 zum Thema KVM ...

Heiß diskutierte Inhalte
Basic
Programmierung von Windows Programmen (9)

Frage von Ghost108 zum Thema Basic ...

C und C++
Fehlendes verständiss von C und C++ (8)

Frage von zelamedia zum Thema C und C ...