Вывод текста командной строкой из буфера обмена
Я скопировал текст в буфер. Можно ли командной строкой его вывести из буфера в, скажем, текстовой документ?
Отслеживать
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 5 есть две команды Set-Clipboard и Get-Clipboard. Одна команда может вставить данные из буфера, а другая установить.
Например так мы получим данные из буфера:
Get-Clipboard
Из дополнительных ключей есть Format, который выполнит форматирование буфера. Если мы выделили ряд файлов, то можем получить такой результат:
Get-Clipboard -Format FileDropList
Кроме FileDropList есть еще значения:
- Text — по умолчанию
- FileDropList — получение данных о файлах
- Image — получение данных о картинке
- Audio — получение данных об аудио
Например данные со свойством Image я не смог получить из файловой системы, только с картикне в интернете с браузера Edge:
Get-Clipboard -Format Image
Остальные ключи у меня не работают или аналогично другому примеру только в каких-то специфичных условиях. Это ключ Raw, который должен игнорировать символы новой строки и TextFormatType, в котором указывается тип данных буфера. Ключ TextFormatType может принимать следующие значения (у меня они не работают):
- Text
- UnicodeText
- Rtf
- Html
- CommaSeparatedValue
Противоположны ключ устанавливает значения в буфер. Так мы скопируем значение:
$var = "строка для копирования" Set-Clipboard -Value $var
Можно к существующему буферу добавить еще значения:
$var2 = "строка для копирования2" Set-Clipboard -Append $var2
По идеи мы можем скопировать содержимое все папки с ключом 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, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.