Есть ли способ «получить буфер обмена» и использовать указанную информацию буфера обмена в командной строке?

#powershell #scripting #macros

#powershell #сценарии #макросы

Вопрос:

Я создаю скрипт для преобразования PDF в текстовый файл. Я пытаюсь скопировать имя файла, а затем использовать скопированное имя файла в следующей строке скрипта. Но использование get-clipboard не включает эти данные в ту же командную строку. Есть ли способ по существу ctrl v в этой строке с помощью PS?

 PS C:UsersPiRho> @(get-childitem C:UsersPiRhoDesktopPDF_Convert -name) [0] | set-clipboard
PS C:UsersPiRho> cd C:UsersPiRhoDesktopPDF_Convert
PS C:UsersPiRhoDesktopPDF_Convert> .pdftotext -table | get-clipboard
  I/O Error: Couldn't open file 'get-clipboard'
  

Итак, это старый способ, которым я это делал.

 PS C:UsersPiRho> @(get-childitem C:UsersPiRhoDesktopPDF_Convert -name)[0] | set-clipboard
PS C:UsersPiRho> cd C:UsersPiRhoDesktopPDF_Convert
PS C:UsersPiRhoDesktopPDF_Convert> .pdftotext -table #Ctrl V#
  

Это #Ctrl V# делается с помощью моего макроса, но иногда он будет использовать предыдущую информацию буфера обмена.

Фактически я ищу замену Ctrl V в powershell, которая не полагается на макрос для ввода туда имени файла.

Комментарии:

1. Обязательно ли это должен быть буфер обмена? лучший способ — сохранить имя файла в переменной и использовать его.

2. @HAL9256 Это то, о чем я думал, но я очень новичок в PS и любом кодировании в целом. При этом я не уверен, как бы я это сделал.

3. Ваша команда .pdftotext -table | get-clipboard не имеет смысла для меня, Get- командлет является источником, а не местом назначения для канала. что вы могли бы попробовать: .pdftotext -table (get-clipboard) или .pdftotext -table (get-clipboard)[0]

4. Или .pdftotext -table (gci DesktopPDF_Convert)[0].Name

Ответ №1:

Самый простой способ — использовать переменные, чтобы что-то вроде:

 $File = @(get-childitem C:UsersPiRhoDesktopPDF_Convert -name)[0]
cd C:UsersPiRhoDesktopPDF_Convert
.pdftotext -table $File.FullName