Batch-Datei lässt sich nur über die Eingabeaufforderung ausführen?

2 Antworten

Ohne den Code zu sehen wäre es müßig irgendwelche Vermutungen zu dem Verhalten anzustellen.

Vielleicht wäre es angebracht mal an das Ende der der Batch ein "Pause" zu platzieren, so das du eventuelle Fehlermeldungen sehen kannst?

Wenn Du cmd über Win+R startest und von dort aus die Batch startest, ist der Ordner in welchem die Batch ausgeführt wird selbstverständlich ein anderer als beim Start der Batch per Doppleklick und wiederum ein anderer als beim Start der Batch als Admin.

  • Win+R startet cmd.exe im Ordner %userprofile% (c:\users\nutzername)
  • ausführen als Administrator startet cmd im Ordner %WINDIR%\system32 (C:\Windows\System32)
  • eine per Doppelklick gestartete Batch wird (ohne übergebene Pfad-Parameter) in ihrem Speicher-Ordner ausgeführt. (mit einem Pfad als Parameter) wird die Batch im Ordner der ersten als Parameter übergebenen Datei ausgeführt.

Das bedeutet , je nach Bedingungen, unter welchen Du die Batch startetes können relative Pfade vorhanden sein (oder auch nicht) bzw die Schreibberechtigungen auf Dateien und Ordner können sich ändern.

Sollen relative Pfade verarbeitet werden, so ist es in jedem fall angebracht am Beginn der Batch mit einem cd /d "absoluter Arbeitspfad" festzulegen wo diese auszuführen ist. Soll die Batch garantiert in dem Pfad ausgeführt werden, wo sie gespeichert ist genügt ein:

cd /d "%~dp0"

Hier eine kleine Batch mit der Du mal die oben aufgezählten Szenarien durchspielen kannst.

demo.cmd

@echo off
echo Aufrufordner dieser Batch: "%cd%"
cd /d "%~dp0"
echo Speicher- und Ausfuehrungsort: "%cd%"
pause

Für jemanden der bereits an derartig simplen Regeln scheitert, ist mklink mit Sicherheit kein "netter" Befehl und kann sehr viel Schaden anrichten. Es gibt sehr gute Gründe, weshalb mklink (außer /j) Adminrechte benötigt!

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

desperateuser91 
Beitragsersteller
 29.08.2022, 00:19

Danke, mit der demo.cmd hab ich den Fehler gefunden

Dieses Verhalten wäre verständlich für den Fall, dass im Batch File nicht alle Dateien und Ordner über absolute Pfade adressiert werden.


desperateuser91 
Beitragsersteller
 28.08.2022, 15:08

Die Pfade sind absolut. Selbst, wenn das Skript im selben Ordner wie die Verknüpfung und die Zieldatei liegt, funktioniert es nicht.

grtgrt  28.08.2022, 17:25
@desperateuser91
Zum Anlegen einer symbolischen Verknüpfung wird das Recht Create Symbolic Link benötigt. Dieses steht standardmäßig nur Benutzern mit Administratorrechten zur Verfügung, nicht aber dem Systembenutzer 'SYSTEM'

Wahrscheinlich hat es damit zu tun.