1

Когда вы выполняете Copy (CTRL+C) для файла или папки, то в некоторых программах, но не во всех (например: это работает в адресной строке Windows Explorer, также с программным обеспечением для индексирования Everything), когда выполняется вставка (CTRL+V) имя файла или каталога вставляется как текст, например: "D:\Test\Temp" .

Вопрос: Если вы нажмете CTRL+C для файла или папки в проводнике Windows, как получить его имя в пакетном файле test.bat который вы запускаете сразу после?

Я попытался с clip.exe, как предложено в Access clipboard в пакетном файле Windows, но это не сработало: похоже, что clip.exe делает противоположное (запись в буфер обмена).


Примечание: в отличие от Как скопировать путь к файлу в буфер обмена? (для его ответов требуется стороннее программное обеспечение, или другое решение для горячих клавиш, или используйте AutoHotkey), здесь я явно ищу решение, которое работает в пакетном режиме, со стандартным сочетанием клавиш CTRL+C (а не с другой горячей клавишей, не использующей AutoHotkey и т. д.) и никакого стороннего программного обеспечения.

4 ответа4

1

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

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

0

Выберите файл или папку, нажмите F2 , затем используйте Ctrl-C . Это должно позволить вам просто скопировать имя (на самом деле «базовое имя») файла или папки.

0

Вы можете Shift+Right click по файлу в Проводнике и выбрать "Копировать как путь":

Или, если вы выбираете имя файла, и используете Ctrl+Shift+C

Это скажет Проводнику скопировать информацию в буфер обмена в формате CF_TEXT вместо обычного формата CF_HDROP. Некоторые программы не знают, что делать с форматом CF_HDROP, но все должны понимать формат CF_TEXT.

0

Используйте powershell , присутствующий во всех поддерживаемых версиях Windows, вместо устаревшей оболочки cmd .
(Это обещано Microsoft, чтобы быть удаленным в будущем).

Запустите powershell и используйте функцию:

Get-Clipboard

он вернет вам содержимое буфера обмена, а Set-Clipboard сделает наоборот - поместите что-нибудь в буфер обмена.

Если вы не хотите переключаться в PowerShell , вы можете вызвать его по требованию из своего пакетного сценария как:

 powershell -Command "& {Get-Clipboard}"

чтобы получить содержимое буфера обмена в вашем скрипте.

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