CTRL + C на файле / папке, как получить имя файла в пакете? (чтение файлов буфера обмена из пакета)
439
Basj
Когда вы делаете 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 и т. д. ) и никакого стороннего программного обеспечения.
Возможный дубликат [Как скопировать путь к файлу в буфер обмена?] (Https://superuser.com/questions/14974/how-to-copy-file-path-to-clipboard)
WireGuy 6 лет назад
0
@WireGuy: Нет, пожалуйста, смотрите отредактированный вопрос.
Basj 6 лет назад
0
Вы можете получить полное имя пути, перетащив этот файл из проводника в командное окно, при этом будет вставлен полный путь.
Программа может помещать контент разных типов в буфер обмена. Например, Word может размещать текст как обычный текст и как отформатированный текст. Некоторые программы умны и извлекают имя файла, когда вы поместили (ссылку на) файл в буфер обмена. К сожалению, командных окон нет.
Это выглядит многообещающе, но я ищу решение только с CTRL + C для взаимодействия с пользователем. (Нет перетаскивания). Остальное должно быть сделано только с помощью пакетного файла .bat.
Basj 6 лет назад
0
если вы запускаете пакетный файл, то вам уже нужно перетащить эти файлы в пакетный файл в проводнике или ввести имя пакетного файла, а затем перетащить его в cmd. Я не понимаю, что вы подразумеваете под «как получить его имя файла в пакетном файле test.bat» в этом случае. Если вы хотите вставить эти имена в содержимое пакетного файла, то это бесполезно, в противном случае передавать их в качестве аргументов, как я упоминал
phuclv 6 лет назад
0
0
NOLFXceptMe
Выберите файл или папку, нажмите F2, затем используйте Ctrl-C. Это должно позволить вам просто скопировать имя (на самом деле «базовое имя») файла или папки.
Я знаю этот трюк, но я ищу решение, которое работает со стандартными CTRL + C (и без F2). Более того, я ищу полный путь.
Basj 6 лет назад
0
0
WireGuy
Вы можете Shift+Right clickна файл в проводнике и выбрать «Копировать как путь»:
Или, если вы выбираете имя файла и используете Ctrl+Shift+C.
Это скажет Проводнику скопировать информацию в буфер обмена в формате CF_TEXT вместо обычного формата CF_HDROP. Некоторые программы не знают, что делать с форматом CF_HDROP, но все должны понимать формат CF_TEXT.
Спасибо за Ваш ответ. Как уже упоминалось в вопросе, я ищу решение с помощью CTRL + C, которое затем будет доступно в командном файле .bat через командную строку (без какого-либо файла перетаскивания в cmd.exe).
Basj 6 лет назад
0
см. ссылку для вставки в командную строку: https://www.howtogeek.com/howto/25590/how-to-enable-ctrlv-for-pasting-in-the-windows-command-prompt/
WireGuy 6 лет назад
0
Спасибо @WireGuy, я уже использую это. Но в моем контексте пакет даже не отображается, поэтому мне не нужно было видеть cmd.exe, чтобы вставить туда вручную.
Basj 6 лет назад
0
Чтобы понять, почему у меня такие странные требования, вот решение с использованием Python: https://superuser.com/questions/260740/are-there-any-gui-tools-to-manage-creating-symlinks#comment2033158_260740 для скважины известная проблема (создать символическую ссылку с графическим интерфейсом в Windows). Я пытался сделать то же самое только с пакетом (без Python), но для этого мне нужно иметь возможность получить имя файла в пакете;) Вот и вся история! Кстати, спасибо за вашу помощь!
Basj 6 лет назад
0
@Basj просто перетащите файлы в командный файл, нет необходимости отображать cmd. Иначе как вы собираетесь вставить эти имена файлов?
phuclv 6 лет назад
0
0
Alex
Используйте powershellэтот подарок во всех поддерживаемых версиях Windows вместо устаревшей cmdоболочки. (Это обещано Microsoft, чтобы быть удаленным в будущем).
Запустите powershellи используйте функцию:
Get-Clipboard
он вернет вам содержимое буфера обмена, а Set-Clipboardпоступит наоборот - поместите что-нибудь в буфер обмена.
Если вы не хотите переключаться на PowerShell, вы можете вызвать его по требованию из вашего пакетного скрипта как:
powershell -Command "& "
чтобы получить содержимое буфера обмена в вашем скрипте.
Я получаю это в Windows 7: «Термин« Get-Clipboard »не распознается как имя командлета, функции».
Basj 6 лет назад
0
Get-Clipboard - это новый командлет в [PowerShell 5.0] (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-clipboard?view=powershell-5.0). Windows 7 включает PowerShell 2.0, который слишком стар, чтобы быть полезным
phuclv 6 лет назад
0
@Basj Как указывал phuclv, вам нужна более свежая версия PowerShell и, по крайней мере, .NET Framework 4.5 или выше.
Alex 6 лет назад
0