Ich arbeite an einigen langen Prozeduren, die viele Dateipfade von Dokumenten referenzieren müssen, die sich lokal und auf verschiedenen externen Laufwerken und Servern befinden. In allen Fällen verwenden wir Apple Macs, auf denen entweder El Capitan oder Sierra installiert ist.
Mein Problem - es dauert lange, die Dateipfade manuell einzugeben und zu überprüfen, ob sie korrekt sind.
Bevorzugte Lösung - Ich würde es lieben, wenn es nur eine Möglichkeit gäbe, die Dateipfade in diese Prozeduren zu kopieren und einzufügen.
Ich habe versucht, die Option "Informationen abrufen" zu verwenden, konnte aber nirgendwo einen Dateipfad sehen, den ich kopieren und einfügen könnte.
Ich habe auch diese Frage gelesen: Komponenten (Pfad und Dateiname) von POSIX-Dateipfad abrufen und habe versucht, das Skript zu verwenden. Das war vielversprechend, aber es erfüllt nicht ganz das, was ich brauche.
Gibt es eine einfache Möglichkeit für mich, Dateipfade einfach zu kopieren und einzufügen, wenn ich sie brauche?
Wenn ich zum Beispiel ein Bild namens „Serial Number.jpg“ habe, das sich auf einem externen Laufwerk namens Server1 befindet, wäre der Dateipfad: /Volumes/Server1/Serial Number.jpg
.
Ich denke, dies ist eine Option, die genau das tut, was Sie wollen. Gehen Sie am Beispiel Ihres Serial Number.jpg wie folgt vor:
Dies sollte/Volumes/Server1/Serial Number.jpg
dazu führen, dass der Pfad in Ihr Dokument eingefügt wird.
Verwenden Sie einfach die gleichen Schritte für jede Datei, unabhängig davon, ob sie lokal, auf einem externen Laufwerk oder auf einem Server gespeichert ist. Dies funktioniert auch, um den Dateipfad von Ordnern zu erhalten.
Tastaturkürzel
Danke an Mateusz Szlosek für den Hinweis, dass man auch eine Tastenkombination verwenden kann. Anstelle der Schritte 2 bis 4 oben können Sie, nachdem Sie die Datei ausgewählt haben, die Verknüpfung option+ command+ verwenden C, um den Dateipfad zu kopieren. Dann können Sie es wie gewohnt einfügen.
Windows usw. Dateien
Es gibt benutzerdefinierte Dienstprogramme zum Formatieren von Freigaben für andere Betriebssysteme und auch für sub/afp:
⌥ ALT
+ ⌘ CMD
+ C
, Sie müssen dies nicht über das Kontextmenü tun.opt
Enthüllungen?opt
wie in?Sie können eine Datei [oder eine ganze Reihe davon] einfach per Drag & Drop in einen Textbereich ziehen, um ihren [ihren] Pfad [ihre] Pfade zu erhalten - nicht in allen Apps, aber in vielen, einschließlich Terminal [& übrigens im Frage-/Antwortbereich auch auf Stack Exchange.]
Einige Apps, wie BBEdit, unterstützen dies nicht und nehmen den Inhalt der Datei anstelle des vollständigen Pfads. Für diese Apps Commandfunktioniert auch ein 'Drag & Drop'.
Ich würde es vorziehen, einfach eine Datei per Drag & Drop in einen Textbereich zu ziehen, um ihren Pfad zu erhalten (siehe Tetsujins Antwort).
Wenn dies bei Ihnen nicht funktioniert, sollten Sie in Betracht ziehen, ein sehr kleines Programm in Qt zu schreiben.
Von http://qtsimplify.blogspot.de/2013/01/drag-and-drop-files-into-your.html :
Erstellen Sie eine neue "Qt Gui-Anwendung" in Qt Creator.
Bearbeiten Sie die Header-Datei mainwindow.h, indem Sie die folgenden Header hinzufügen:
#include <QDropEvent>
#include <QUrl>
#include <QDebug>
Implementieren Sie die geschützten Funktionen dropEvent() und dragEnterEvent() protected neu:
void dropEvent(QDropEvent *ev);
void dragEnterEvent(QDragEnterEvent *ev);
Fügen Sie in der mainwindow.cpp diese Zeilen hinzu:
void MainWindow::dropEvent(QDropEvent *ev)
{
QList<QUrl> urls = ev->mimeData()->urls();
foreach(QUrl url, urls)
{
qDebug()<<url.toString();
}
}
void MainWindow::dragEnterEvent(QDragEnterEvent *ev)
{
ev->accept();
}
Mit der Funktion dropEvent() stellen Sie den Namen aller Dateien wieder her, die Sie in Ihrer Anwendung ablegen.
Und schließlich fügen Sie diese Zeile in Ihren Hauptfensterkonstruktor ein:
setAcceptDrops(true);
Wenn Sie dann zB die Pfade in der Zwischenablage haben wollen, brauchen Sie sie nur noch mit QClipboard dorthin zu kopieren
QClipboard *clipboard = QGuiApplication::clipboard();
clipboard->setText(url.toString());
Für einzelne Dateiablagen und eine Liste für alle Dateien.
Ich verwende das Services
Kontextmenü "Pfad zur Zwischenablage" im Finder (obwohl ich häufiger das Kontextmenü von QuollEyeTree verwende).
Ich bin mir nicht sicher, ob dies ein Standarddienst ist oder einer, den ich mit Automator erstellt habe (meiner ist aus dem Jahr 2012), aber es ist trivial, einen solchen Dienst zu erstellen, falls er noch nicht existiert.
Eine Befehlszeilenlösung, die ich zum schnellen Abrufen von Pfaden verwende, ist die Verwendung von realpath von GNU Coreutils . Ich habe coreutils
über MacPorts installiert, wo die Binärdatei heißt grealpath
. Sie können es dann für eine Datei aufrufen und erhalten den Pfad. Ich mische es gerne mit pbcopy
, um schnell einen Pfad in meine Zwischenablage zu bekommen:$ grealpath histograms.root | pbcopy
histograms.root
, und nicht den vollständigen Pfad der Datei selbst enthält. Sie könnten trivialerweise ein Shell-Skript schreiben, um dies zu tun, aber ich habe es nicht getan.Es gibt eine App im App Store namens "FilePath" IIRC. Klicken Sie auf die Datei in der GUI, dann auf das Dateipfad-Symbol und wählen Sie „Pfad kopieren“ aus dem Menü. Es kann auch mehrere Pfade kopieren. Wenn Sie nach etwas Schnellerem suchen, können Sie der Aktion eine Tastenkombination zuweisen.
Ich verwende diese App regelmäßig, um synchronisierte Cloud-Speicherorte mit Kollegen zu teilen.
Informationen (⌘i) einer beliebigen Datei oder eines Ordners abrufen.
Klicken Sie dreimal auf „ Wo “ unter der Kategorie „ Allgemein “, um den Pfad hervorzuheben.
Kopieren (⌘c) Sie diesen hervorgehobenen Text und der Pfad wird in Ihre Zwischenablage kopiert.
Schließen Sie das Fenster (⌘w)
Fügen Sie dort ein, wo Sie es benötigen (⌘v)
In einem Finder-Fenster können Sie Ihre Datei auswählen. Wenn Sie das Zahnradsymbol in Ihrem Finder-Fenster haben, können Sie die Optionstaste gedrückt halten und auf dieses Symbol klicken. Eine verfügbare Option ist das Kopieren von Pfadnamen. Wenn ausgewählt, kopiert es den vollständigen Pfadnamen in die Zwischenablage. Sie müssen die Datei nicht öffnen.
Aneta