Как вставить в powershell скопированный текст
Перейти к содержимому

Как вставить в powershell скопированный текст

  • автор:

Вывод текста командной строкой из буфера обмена

Я скопировал текст в буфер. Можно ли командной строкой его вывести из буфера в, скажем, текстовой документ?

Отслеживать
13.8k 12 12 золотых знаков 44 44 серебряных знака 77 77 бронзовых знаков
задан 15 июл 2019 в 19:49
737 3 3 серебряных знака 15 15 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Здесь одно решение (ответ пользователя Dragokas)

Здесь второе решение, если у Вас есть PowerShell

Если вкратце, стандартных средств cmd для Вашей задачи не предусматривает. Необходима либо PowerShell (как во второй ссылке), либо стороннее ПО(как в первой ссылке).

Для помещения текста В буфер обмена существует стандартная утилита clip. Подробнее clip /? в cmd.

Отслеживать
ответ дан 16 июл 2019 в 5:45
5,125 1 1 золотой знак 14 14 серебряных знаков 31 31 бронзовый знак

Спасибо за ответ. Вторую ссылку я вчера сам находил. Блин, наверное, вариант с PowerShell не подойдет: запуск сторонней программы. А вот вы говорите: «если он есть», А что, его может и не быть? У меня на компе уже третья система (все винды). Во всех трех он присутствовал изначально.

16 июл 2019 в 10:25

@mathem Проголосуйте, пожалуйста, за ответ или отметьте его как решение, если он был полезен. PowerShell есть в ОС, начиная с Win7. Например, если у Вас XP, его не будет.

Как вставить в powershell скопированный текст

Сообщения: 184
Благодарности: 0

Есть ли способ копировать из буфера обмена в командную строку и в powershell?

Сообщения: 1240
Благодарности: 275

ivanhoe75, да. А в чем вопрос?

PS: Правой кнопкой мыши в консольном окне, там пункты «Пометить» или «Вставить». Для PowerShell’а есть какие-то модули, позволяющие делать копирование-вставку по горячим клавишам, есть в конце-концов ConEmu. Ну и для работы в консоли ну очень удобно использовать Far Manager.

Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Работа с буфером обмена в Powershell c Set-Clipboard

Работа с буфером обмена в Powershell c Set-Clipboard

Для работы с буфером обмена в Powershell 5 есть две команды Set-Clipboard и Get-Clipboard. Одна команда может вставить данные из буфера, а другая установить.

Например так мы получим данные из буфера:

Get-Clipboard

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

Get-Clipboard -Format FileDropList

Powershell Get-ClipBoard

Кроме FileDropList есть еще значения:

  • Text — по умолчанию
  • FileDropList — получение данных о файлах
  • Image — получение данных о картинке
  • Audio — получение данных об аудио

Например данные со свойством Image я не смог получить из файловой системы, только с картикне в интернете с браузера Edge:

Get-Clipboard -Format Image

Get-Clipboard Image

Остальные ключи у меня не работают или аналогично другому примеру только в каких-то специфичных условиях. Это ключ Raw, который должен игнорировать символы новой строки и TextFormatType, в котором указывается тип данных буфера. Ключ TextFormatType может принимать следующие значения (у меня они не работают):

  • Text
  • UnicodeText
  • Rtf
  • Html
  • CommaSeparatedValue

Противоположны ключ устанавливает значения в буфер. Так мы скопируем значение:

$var = "строка для копирования" Set-Clipboard -Value $var

Можно к существующему буферу добавить еще значения:

$var2 = "строка для копирования2" Set-Clipboard -Append $var2

Set-ClipBoard работа с буфером Powershell

По идеи мы можем скопировать содержимое все папки с ключом Path, но он, похоже, тоже не работает. Аналогичная ситуация с ключом -AsHtml, который допускает форматирование HTML, но если его установить, то ничего не получим.

Примеры работы с командами буфера обмена в Powershell

Очевидно, что примеров работы масса, но связана она в основном с рутинными действиями. Например нам нужно отсылать какую-то информацию через Powershell в определенном формате. У нас есть выбор — помещать все в файл и отсылать его, либо копировать как сплошной текст, либо отсылать в виде HTML. На примере ниже я копирую в буфер данные по процессам и преобразую в HTML. После этого я могу просто вставить эту часть в письмо:

Get-Process | Select Name,ID | Convertto-HTML | Set-Clipboard

Вам так же будет интересно:

Конвертация вывода через ConvertTo-Html в Powershell

Другой пример использования — это математические задачи, которые выполняются часто. Можно поместить в скрипт .ps1 и запускать его:

$result = 2 + (Get-Clipboard) Set-Clipboard $result Get-Clipboard

Работа с файлами и папками

Навигация по дискам PowerShell и управление элементами на них аналогична обработке файлов и папок на дисках Windows. В этой статье описывается выполнение конкретных задач по управлению файлами и папками с помощью PowerShell.

Перечисление всех файлов и папок в папке

Все элементы можно получить непосредственно в папке с помощью Get-ChildItem . Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает прямое содержимое диска C: PowerShell.

Get-ChildItem -Path C:\ -Force 

Команда перечисляет только непосредственно содержащиеся элементы, например команду dir в cmd.exe оболочке UNIX или ls в ней. Чтобы отобразить элементы в вложенной папке, необходимо указать параметр Recurse . Следующая команда выводит список всех элементов на C: диске:

Get-ChildItem -Path C:\ -Force -Recurse 

Командлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Вы можете выполнять сложную фильтрацию на основе других свойств элементов с помощью Where-Object .

Следующая команда находит все исполняемые файлы в папке Program Files, которые были изменены после 1 октября 2005 года, и они не меньше 1 мегабайт или больше 10 мегабайт:

Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript

Копирование файлов и папок

Копирование выполняется с помощью командлета Copy-Item . Следующая команда создает резервную копию скрипта профиля PowerShell:

if (Test-Path -Path $PROFILE)

Команда Test-Path проверка, существует ли скрипт профиля.

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

if (Test-Path -Path $PROFILE)

Эта команда работает, даже если целевой объект доступен только для чтения.

Так же выполняется и копирование папок. Эта команда копирует папку C:\temp\test1 в новую папку C:\temp\DeleteMe рекурсивно.

Copy-Item C:\temp\test1 -Recurse C:\temp\DeleteMe 

Можно также скопировать избранные элементы. Следующая команда копирует все .txt файлы, содержащиеся в любом месте в C:\data C:\temp\text :

Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text 

Вы по-прежнему можете выполнять собственные команды, такие как xcopy.exe и robocopy.exe копировать файлы.

Создание файлов и папок

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

Эта команда создает папку C:\temp\New Folder :

New-Item -Path 'C:\temp\New Folder' -ItemType Directory 

Эта команда создает пустой файл C:\temp\New Folder\file.txt .

New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType File 

При использовании параметра Force с командой New-Item для создания папки, которая уже существует, она не перезапишет и не заменит папку. Будет просто возвращен имеющийся объект папки. Однако если вы используете New-Item -Force файл, который уже существует, файл перезаписывается.

Удаление всех файлов и папок в папке

Удалить вложенные элементы можно с помощью командлета Remove-Item , однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, если вы попытаелись удалить папку C:\temp\DeleteMe , содержащую другие элементы, PowerShell запрашивает подтверждение перед удалением папки:

Remove-Item -Path C:\temp\DeleteMe 
Confirm The item at C:\temp\DeleteMe has children and the Recurse parameter wasn't specified. If you continue, all children will be removed with the item. Are you sure you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): 

Если вам не нужно запрашивать каждый содержащийся элемент, укажите параметр Recurse :

Remove-Item -Path C:\temp\DeleteMe -Recurse 

Сопоставление локальной папки как диска

Отобразить локальную папку можно с помощью команды New-PSDrive . Следующая команда создает локальный диск P: , корневым каталогом которого является локальный каталог Program Files, отображающийся только в сеансе PowerShell:

New-PSDrive -Name P -Root $env:ProgramFiles -PSProvider FileSystem 

Как и при использовании сетевых дисков, диски, сопоставленные в PowerShell, сразу же видны оболочке PowerShell. Чтобы создать сопоставленный диск, видимый из проводник, используйте параметр «Сохранить«. Однако с сохранением можно использовать только удаленные пути.

Чтение текстового файла в массив

Одним из наиболее общих форматов хранения текстовых данных является файл, отдельные строки которого рассматриваются как отдельные элементы. Командлет Get-Content используется для чтения всего файла за один шаг, как показано далее:

Get-Content -Path $PROFILE # Load modules and change to the PowerShell-Docs repository folder Import-Module posh-git Set-Location C:\Git\PowerShell-Docs 

Get-Content обрабатывает данные, считанные из файла как массив, с одним элементом на строку содержимого файла. Убедиться в этом можно, проверив свойство Length полученного содержимого:

PS> (Get-Content -Path $PROFILE).Length 3 

Эта команда наиболее полезна для получения списков сведений в PowerShell. Например, можно сохранить список имен компьютеров или IP-адресов в файле C:\temp\domainMembers.txt с одним именем в каждой строке файла. Вы можете использовать командлет Get-Content , чтобы извлечь содержимое файла и поместить его в переменную $Computers :

$Computers = Get-Content -Path C:\temp\DomainMembers.txt 

Теперь переменная $Computers представляет собой массив, содержащий в каждом элементе имя компьютера.

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *