2015-04-24 5 views
3

Фонсписок Convert путей к списку имен файлов

Я считаю себя часто копирование пути к файлу в буфер обмена, который несколько громоздким, чтобы сделать из Windows Explorer.

Поэтому я написал немного файла .bat, чтобы поместить его в папку %APPDATA%\Microsoft\Windows\SendTo\, используя CLIP executable, чтобы скопировать список выбранных путей к файлу в буфер обмена. Этот файл состоит только из одной строки:

echo|set /p= "%*" | clip.exe 

который работает довольно хорошо, я могу выбрать один или несколько имен файлов в проводнике, щелкните правой кнопкой мыши на них и «Отправить» в .bat файл, который копирует их в буфер обмена. Каждый путь к файлу завершен и отделен от остальных символом пробела.

Вопрос

Иногда, я не хочу, чтобы скопировать список полных путей к файлам, но предпочел бы, чтобы список только имен файлов с их расширениями. Я знаю, как сделать это преобразование для одиночных путей файлов, используя синтаксис %~nx, как описано here или here.

Я пробовал разные комбинации, но, похоже, не нашел подходящего решения для моего списка путей. Следующий код echo S имена файлов правильно:

for %%F in (%*) do echo %%~nxF 

... но как я могу объединить их через перейти к CLIP? Нужно ли выполнять конкатенацию строк? Может быть, в подпрограмме должно быть call ed, или есть более элегантное решение?

ответ

1

Следующая поместит имя каждого файла на отдельной строке в буфер обмена:

@(for %%F in (%*) do @echo %%~nxF)|clip 

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

@(for %%F in (%*) do @<nul set /p =""%%~nxF" ")|clip 
0

не могли бы вы просто:

echo|set /p= "%~nx*" | clip.exe 
+1

Вы попробовали? 'Недопустимо следующее использование оператора пути в подстановке пакетных параметров:% ~ nx *" ' – JosefZ

+0

В моей системе Windows 7 это сообщение об ошибке появляется так же, как @JosefZ. – FriendFX

Смежные вопросы