Anzeige

Am Puls von Microsoft

Anzeige

[gelöst] Assoc-Befehl in cmd

agent876

Herzlich willkommen
Hallo,
ich wollte in cmd mit dem assoc Befehl einstellen, dass .pdf Datein mit dem Editor geöffnet werden.
Dazu gab ich fogendes ein: assoc .pdf=txtfile
Sollte das nicht so funktionieren?
Ich bekam den Fehler:
Zugriff verweigert
Folgender Fehler trat auf: .pdf.

Könnt ihr mir bitte sagen, was ich falsch gemacht habe?
 
Anzeige
Du musst die Eingabeaufforderung mit Adminrechten starten - das sagt die Fehlermeldung auch aus.
 
Vielen Dank für deine Antwort!
Es funktioniert jetzt!
Eine Frage habe ich aber noch: Gibt es eine Möglichkeit, das so in einer bat-Datei zu schreiben, dass man diese nicht mit Administratorrechten ausführen muss um den Befehl ausführen zu können?
 
Nein, denn das System verweigert Dir ja die Schreibrechte, weil Du da nicht mit Adminrechten agierst. Du kannst das aber in einer Batchdatei ablegen, zu der eine Verknüpfung erstellen und in der einstellen, dass sie immer mit Adminrechten ausgeführt werden soll.

Wenn Du das richtig ausgestaltest, dann kannst Du Dich dabei auch fragen lassen, welche Endung mit welchem Dateityp verknüpft werden soll.

Das geht etwa so:

Set /p =
Set /p =
Assoc %1 = %2


Wenn Du das als Batchdatei ablegst, wird zuerst die Dateiendung erfragt, dann wird der Dateityp erfragt und daraus wird der Befehl dann erstellt und ausgeführt.
 
Zuletzt bearbeitet:
Lies nochmal meinen obigen Post, ich hab ihn korrigiert, bei "Set /p =" muss die Zeile ab dem Gleichheitszeichen leer bleiben.
 

Anhänge

  • are-you-too-busy-to-improve2.png
    are-you-too-busy-to-improve2.png
    352,9 KB · Aufrufe: 263
Es ist leider die einzige Zukunft, mit der man vernünftig arbeiten kann. Natürlich erfordert es mehr Einarbeitung, aber es bietet auch erheblich mehr. Und bei komplexeren Batch-Strukturen wesentlich leichter umzusetzen.

Mir ist das im Prinzip schleierhaft, warum MS selbst an diesem überholten Quark festhält, nur um Alt-Admins zu hofieren. Es gibt reichlich Befehle, die schon auf 32 oder 64 Bit gehoben worden sind - ohne Eingabeaufforderumg und comspec, da fehlt die letzte Konsequenz. Es wäre schon gut, wenn man NET nicht mehr nutzen könnte auf dieser Ebene, im Bereich Netzwerk und Zugriffe. Statische Zuweisen via net use sind überholt. Allerdings kann NET noch mehr. Genauso wie ipconfig und ähnliche, ob das auch mit PS umsetzbar ist kann ich nicht sagen, bei ipconfig wird blanko die Registry ausgelesen, ist mit jedem anderen Script auch möglich und zwar auf einer Ebene, die schneller und direkter arbeitet.

Negativbeispiel ist REG, welches direkt mit der Registry hantiert und auch für "schlechte" (zB versteckte) Einträge nutzbar ist. Als Admin kann man vieles abschalten, aber sowas hätte ich ganz rausgekickt.

Ich arbeite bei komplexen Probleme gerne mit AutoIt, entweder mit den Scripten oder als Kompilation.

In Bezug auf assoc würde ich eher auf eine Reg-Datei zurückgreifen. Natürlich ist deine Lösung mit Batch-Parametern variabler. Es gäbe auch die Option "OpenWithList", zB

HKEY_CLASSES_ROOT\.htm\OpenWithList

Bsip: HKEY_CLASSES_ROOT\.htm\OpenWithList\notepad.exe
keine weiteren Werte, die Angabe notepad.exe reicht schon, notepad.exe muss sich dann auch unter den eingetragenen Apps befinden:
HKEY_CLASSES_ROOT\Applications\notepad.exe


oder

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\filetype\OpenWithList
https://technet.microsoft.com/de-de/library/ee851670.aspx


Unter Windows Home sind diese Möglichkeiten begrenzt, ab der Pro könnte man auch die GPO für Programmzuordnungen zu ändern.
 
@.Bernd
Natürlich ist die Powershell die Zukunft. Ich nutze sie ja auch am liebsten, schon weil sie mir Möglichkeiten bietet, die per Batch gar nicht mehr umsetzbar sind.

Aber für kleinere Dinge ist ein einfacher Batch oft praktikabler als ein Powershellscript. Das fängt schon damit an, dass Powershellskripte per se nicht mit einem Doppelklick ausgeführt werden können. Und über den Rechtsklick läufts dann auch nur mit Benutzerrechten, weil "Als Administrator ausführen" dort nicht zur Verfügung steht.

Was Ipconfig und Co angeht, man kann in der Powershell ja alles mit gwmi auslesen. Da ist der Vorteil ja, dass man erstens schön filtern kann und die Ergebnisse bei Bedarf in html, xml, csv oder eben rein als Text speichern kann. Kann man zwar auch mit Wmic, aber per Powershell ist es wesentlich schöner zu lösen und man hat Zugriff auf .NET Funktionen um die Scripte direkt mit Win32 Dialogen zu verbinden.

Da ist eine meiner liebsten Beispielzeilen immer noch die hier: powershell.exe -WindowStyle hidden -noexit "Get-EventLog System -newest 200 -EntryType Error, Warning | select En*, Ev*, Source, TimeWritten, Mess* | ogv -title Systemlog". Die als Verknüpfung angelegt, schon bekommt man auf Doppelklick aus den letzten 200 Einträgen des Systemlog die Fehler und Warnungen in einem Windowsdialog präsentiert, in dem man dann nach Herzenslust filtern kann.
 
Anzeige
Oben