40

Есть ли способ скопировать текущее выбранное имя файла, включая путь, в буфер обмена? В идеале это было бы через контекстное меню.

Была бы полезна некоторая степень гибкости, например, возможность копировать только имя файла, путь + имя файла, имя файла без расширения и т.д. Однако это не является обязательным, если можно скопировать путь + имя файла.

Решение должно быть совместимо с Windows XP, Windows Vista и Windows 7.

16 ответов16

74

Начиная с Vista, вы можете просто нажать Shift+ правый клик на файле в проводнике и выбрать "Копировать как путь":

        Запись в контекстном меню «Копировать как путь» в Windows 7

Это даже работает для нескольких файлов, которые помещаются в буфер обмена по одному на строку.

В Windows 8 это отображается на ленте Explorer:

        Кнопка «Копировать путь» на ленте проводника Windows 8 на вкладке «Главная»

5

Используйте CopyFilenames

или же

Скопируйте имена файлов в утилиту буфера обмена

Windows XP не имеет возможности скопировать список имен файлов в буфер обмена (это изменилось в более поздних версиях Windows, начиная с Vista). В статье базы знаний Майкрософт предлагается написать небольшой * .bat-файл, который запускает команду DIR, собирает ее выходные данные в файл, печатает этот файл и затем удаляет его. Иногда это может быть удобно, но было бы более полезно иметь возможность выбрать список файлов и поместить их имена в буфер обмена. Затем вы можете вставить их туда, где они вам нужны.

Так вот утилита для этого. Вы должны сделать немного работы самостоятельно - но не так много - чтобы установить его. Вот инструкции:

  1. Загрузите исполняемый файл. Это всего лишь 20 КБ, поэтому это займет всего несколько секунд, даже если вы используете удаленный доступ. Сохраните его там, где вы хотите, чтобы он находился в вашей системе.
  2. Создать ярлык в "Перейти"

    1. Перейдите в папку "Отправить" под своим именем в \Windows \Profiles в проводнике Windows (или, может быть, XP Home поместит этот каталог в папку "Настройки", я не могу вспомнить).
    2. Щелкните правой кнопкой мыши на правой панели, где находятся имена файлов. Выберите «Создать | Ярлык».
    3. Откроется мастер "Создать ярлык". На первой странице введите путь к исполняемому файлу или нажмите кнопку «Обзор ...», чтобы найти его. Нажмите кнопку "Далее".
    4. На второй странице введите имя для новой опции меню. Я использовал "Имена файлов в буфер обмена", но выбираю то, что будет для вас значимым. Нажмите "Готово"

Это оно; Вы установили это. Теперь выберите один или несколько файлов, щелкните правой кнопкой мыши и переместите указатель мыши на "Отправить". Появится подменю, которое будет включать вашу новую команду. Выберите эту команду, и список выбранных вами файлов, отсортированных по возрастанию, будет в буфере обмена.

Источник: http://members.cox.net/slatteryt/FNtoClip.html

4

Я использую PowerToy для MS Send, доступную как часть набора Windows 95 PowerToys (ссылка на скачивание MS).
Это добавляет «Буфер обмена как имя» (а также «Буфер обмена как содержимое» и некоторые другие параметры) в контекстное меню «Отправить».
Самый простой способ установки - извлечь загруженный файл W95powertoy.exe с помощью утилиты Zip, щелкнуть правой кнопкой мыши «SENDTOX.INF» и выбрать «Установить». Вы можете удалить любые ненужные элементы из меню «Отправить», открыв его в Проводнике.

Прекрасно работает в Windows XP - не в Windows 7, но, как отметил Йоханнес, вместо этого вы можете использовать «Shift + щелчок правой кнопкой мыши».

3

Я использую Ninotech Path Copy. Их сайт мертв, но его можно найти здесь.

Существует 14 различных возможностей для копирования имен файлов, 5 из которых вы можете полностью настроить.

2

Я искал решение горячей клавиши . Для меня это работы:

Windows 7:

  1. Ctrl-C файл
  2. Теперь вы можете вставить (Ctrl-V) непосредственно содержимое буфера обмена в диалоговое окно Windows Open в поле «Путь», если вы просто хотите открыть файл по полному пути ИЛИ Вы можете вставить (Ctrl-V) содержимое буфера обмена в в адресной строке и после этого Ctrl-A, после Ctrl-C и в буфере обмена будет очищен полный путь

Windows 7, Windows Vista, Windows XP:

Скрипт AutoHotkey, немного измененный отсюда для Ctrl + Shift + C

^+c::
Clipboard := gst()

if !IsClipEmpty

ClipWait, 0.5, 1


gst() {   ; GetSelectedText or FilePath in Windows Explorer  by Learning one 

IsClipEmpty := (Clipboard = "") ? 1 : 0

if !IsClipEmpty {

    ClipboardBackup := ClipboardAll

    While !(Clipboard = "") {

        Clipboard =

        Sleep, 10

    }

}

Send, ^c

ClipWait, 0.1

ToReturn := Clipboard, Clipboard := ClipboardBackup

if !IsClipEmpty

ClipWait, 0.5, 1

Return ToReturn

}
1

FreeCommander предоставляет следующие 3 опции после выделения файлов:

  1. Скопируйте полное имя как текст
  2. Скопируйте имя как текст
  3. Скопируйте полный путь как текст
1

StExBar дает вам некоторую гибкость и настраиваемость при копировании имен файлов, путей и т.д., А также различные дополнительные функции.

1

Некоторые из нас не имеют права загружать / устанавливать / компилировать C++ на работе, так что вот решение для загрузки, без установки, без кода. Я только что проверил это с Windows XP SP3:

  • Откройте командную строку.
  • Dir каталог, в котором находятся файлы, которые вы хотите просмотреть.
  • Щелкните правой кнопкой мыши в любом месте окна командной строки и выберите "выбрать все".
  • Нажмите клавишу [enter] (это эффективно скопирует вывод командной строки в буфер обмена).
  • Вставьте содержимое буфера обмена в нужное место (я рекомендую Excel, чтобы вы могли "преобразовать текст в столбцы" и сделать его подходящей таблицей).
1

Вот простой скрипт AutoHotkey, который копирует все аргументы командной строки в буфер обмена (разделенные символами новой строки). Как и в других решениях, он работает через меню « Отправить» , поэтому установите для него ярлык "%USERPROFILE%\SendTo" (или он сделает это за вас, если будет запущен без аргументов).

Чтобы запустить его, вставьте его в блокнот и сохраните в "%USERPROFILE%\SendTo\CopyToClipboard.ahk" . Также вам понадобится AutoHotkey 1.1 (direct dl), это FOSS.

#NoEnv
#NoTrayIcon
#SingleInstance force

If %0%
{
    Loop %0%  ; For each parameter:
        AllArguments .= ( A_Index > 0 ? "`r`n" : "") . %A_Index%
    ;MsgBox %AllArguments%
    Clipboard = %AllArguments%
    ToolTip Copied paths: %0%
} Else {
    MsgBox 68, %A_ScriptName%, This script copies command line arguments to clipboard. Intended to be used as Send To target`, so shourtcut to one should be in Send To.`n`nCreate the shourtcut?
    IfMsgBox Yes
    {
        EnvGet UserProfile, UserProfile
        FileCreateShortcut %A_AhkPath%, %UserProfile%\SendTo\Names to Clipboard.lnk,, %A_ScriptFullPath%, Copies file names (with paths) to clipboard.
    }
}

Sleep 1500
1

Вот мое решение с открытым исходным кодом, а также бесплатно, если вы считаете, что Windows бесплатно :)

Создайте командный файл, скажем, listfiles.bat . Поместите любое из следующего в файл:

FILENAMES

set mylist=myfilelist.txt
set tempfile=tmp.txt
set diroptions=/a /b

set fullpath=%1
for %%i in (%fullpath%) do set path=%%~dpi
cd %path%

if exist %mylist% del %mylist%
if exist %tempfile% del %tempfile%

dir %diroptions% > "%path%%mylist%"

for /f "usebackq delims=" %%a in ("%mylist%") do (
if not "%%a"=="%mylist%" (
echo %%a >> %tempfile%
)
)

del %mylist%
ren %tempfile% %mylist%

ПУТЬ И ФИЛЬЕНАМЫ

set mylist=myfileandpathlist.txt
set tempfile=tmp.txt
set diroptions=/a /b /s

set fullpath=%1
for %%i in (%fullpath%) do set path=%%~dpi
cd %path%

if exist %mylist% del %mylist%
if exist %tempfile% del %tempfile%

dir %diroptions% > "%path%%mylist%"

for /f "usebackq delims=" %%a in ("%mylist%") do (
if not "%%a"=="%path%%mylist%" (
echo %%a >> %tempfile%
)
)

del %mylist%
ren %tempfile% %mylist%

Теперь создайте ярлык для этого файла в каталоге C:\Documents and Settings\<username>\SendTo . Перейдите в каталог, из которого вы хотите получить список файлов. Щелкните правой кнопкой мыши по любому файлу и выберите « Send To -> Shortcut to listfiles.bat . Список файлов будет записан в myfilelist.txt или myfileandpathlist.txt зависимости от вашего выбора. Очевидно, ничто не мешает вам иметь ярлыки для обоих командных файлов в каталоге SendTo .

Для полного списка dir выключатели типа dir /? в командной строке или посетите этот сайт.

1

Работал правильно в Windows 7.

Копировать весь список файлов

Шаг 1 Удерживая клавишу "Shift", щелкните правой кнопкой мыши папку, содержащую список файлов, и выберите "Открыть командное окно здесь".

Шаг 2 Введите «dir /b> filenames.txt» (без кавычек) в окне командной строки. Нажмите Ввод."

Шаг 3 Дважды щелкните файл «filenames.txt» из ранее выбранной папки, чтобы просмотреть список имен файлов в этой папке.

Шаг 4 Нажмите «Ctrl-A», а затем «Ctrl-C», чтобы скопировать список имен файлов в буфер обмена.

Совет. Когда вы будете готовы вставить имена файлов, щелкните место вставки в соответствующей программе и нажмите «Ctrl-V».

1

Инструменты Filemenu могут сделать это плюс куча других полезных вещей.

1

Для тех, кто все еще использует Windows XP (как я, вынужден работать), следующая процедура работает для копирования одного имени файла без какого-либо дополнительного программного обеспечения:

  1. Щелкните правой кнопкой мыши нужный файл в списке Windows Explorer.

  2. Нажмите "Свойства" в выпадающем меню

  3. Выделите имя файла в поле вверху вкладки "Общие"

  4. CTRL-C, чтобы скопировать имя файла и закрыть окно "Свойства"

  5. CTRL-V, чтобы вставить имя файла, где вы хотите.

0

Я написал небольшое бесплатное приложение с открытым исходным кодом .NET под названием fnamecopy для этой цели . Это очень просто и не имеет интеграции правой кнопкой мыши, вы просто перетаскиваете файл (ы)/ папки, для которых вы хотите указать путь, в маленькое окно, а затем вы выбираете, для каких из них вы хотите указать путь. Это очень голые кости, но это делает работу для меня.

0

Мне нравится ClipboardPath от Stefan Bertels. Большинство других инструментов скрывают это в подменю «Отправить», которым я редко пользуюсь; ClipboardPath размещает его в верхней части контекстного меню, и, если вы хотите полный сетевой путь (очень полезно), просто удерживайте нажатой клавишу «Control», прежде чем выбрать «Копировать путь».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .