Аватар для Nark0tik
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 12

Присвоить переменной значение, взятое из буфера обмена

12.02.2013, 19:22. Показов 18221. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Случайно не подскажите как присвоить переменной команду getclip (вставка из буфера обмен)
или что-то подобное извиянюсь за корявость:
Bash
1
set /p buffer=getclip
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2013, 19:22
Ответы с готовыми решениями:

Как присвоить переменной значение, взятое по определенному адресу?
Собственно у меня есть адрес (например, 010426D8), я знаю, что под этим адресом хранится целочисленное значение, как присвоить переменной...

Как присвоить переменной имя, взятое из вектора
Всем привет! Столкнулся со следующей проблемой. Имеется 2 вектора (по сути в них данные из 2 полей таблицы mysql - содержимое...

Как присвоить в VBA содержимое буфера обмена текстбоксу
Как присвоить в VBA содержимое буфера обмена текстбоксу с именем TextBox1 и как проверить что, буфер содержит текст?

20
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
12.02.2013, 19:52
Лучший ответ Сообщение было отмечено как решение

Решение

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

Попробуйте:
nirCMD брать отсюда или с оф.сайта: http://www.nirsoft.net/utils/nircmd.html

nircmd clipboard commands
Clipboard actions:

set - set the specified text into the clipboard.
readfile - set the content of the specified text file into the clipboard.
clear - clear the clipboard.
writefile - write the content of the clipboard to a file. (text only)
addfile - add the content of the clipboard to a file. (text only)
saveimage - Save the current image in the clipboard into a file.
copyimage - Copy the content of the specified image file to the clipboard.
saveclp - Save the current clipboard data into Windows .clp file.
loadclp - Load Windows .clp file into the clipboard.


Bash
1
2
3
4
5
6
7
8
@echo off
::Берем значение из буфера и записываем в файл
nircmd.exe clipboard addfile "info1.txt"
::Читаем первую строку файла
set /p param=<"info1.txt"
del info1.txt
Echo Содержимое буфера обмена: %param%
pause>nul
Еще можно использовать ConClip Карла Питерсона http://vb.mvps.org/tools/ConClip/

Bash
1
2
3
4
5
@echo off
::Читаем вывод утилиты getclip
for /f "delims=" %%A in ('getclip') do Set "param=%%A"
Echo Содержимое буфера обмена: %param%
pause>nul
Записать значение в буфер можно штатно (но только в Windows 7):
Bash
1
Echo Набор данных| Clip
или так:
Bash
1
<nul set /p "=Набор данных" | CLIP
Или указанными выше утилитами:

1. ConClip
Bash
1
Echo Набор данных| SetClip
2. NirCMD
Bash
1
nircmd.exe clipboard set "Набор данных"
6
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
08.06.2013, 23:47
Небольшая статейка по утилите ConClip: Андрей Крупин. Работа с буфером обмена Windows из командной строки
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18025 / 7728 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.01.2016, 17:43
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Дополнение к теме.

Варианты для XP и выше:

Копирование в буфер обмена:

Тонкости языка, редкие команды и сложные скрипты

Получение текста из буфера обмена.

Windows Batch file
1
2
3
4
5
:GetClipboard [Var]
  for /f "delims=" %%j in ('
    mshta "javascript:new ActiveXObject("Scripting.FileSystemObject").GetStandardStream(1).Write(clipboardData.getData("text"))&close();"^| more
  ') do set "%~1=%%j"
exit /B
1
⁞ ★☭ Mad Max ☭★ ⁞
279 / 84 / 12
Регистрация: 04.09.2013
Сообщений: 187
31.01.2016, 09:27
Dragokas,
небольшое дополнение в виде проверки на пустоту буфера
Windows Batch file
1
2
3
4
5
6
:GetClipboard [var]
for /f "delims=" %%i in ('
 mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(clipboardData.getData('Text'));close();"
') do set ClipboardData=%%i
if defined ClipboardData (set %~1=%ClipboardData%) else (exit /b 1)
exit /b 0
1
⁞ ★☭ Mad Max ☭★ ⁞
279 / 84 / 12
Регистрация: 04.09.2013
Сообщений: 187
02.02.2016, 00:38
Проверка содержимого буфера на предмет того, является ли оно текстом
для предотвращения ошибки скрипта:
Windows Batch file
1
2
3
4
5
6
:GetClipboard [var]
for /f "delims=" %%i in ('
mshta "javascript:var s=clipboardData.getData('text');if (typeof(s)=='string')(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s));close();"
') do set ClipboardData=%%i
if defined ClipboardData (set %~1=%ClipboardData%) else (exit /b 1)
exit /b 0
1
 Аватар для ComSpec
3461 / 1999 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
02.02.2016, 00:40
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

@Root, вот так:

Windows Batch file
1
2
3
for /f "delims=" %%i in ('
 mshta "javascript:var x=clipboardData.getData('text');if(x) new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(x);close();"
') do set ClipboardData=%%i
.
2
⁞ ★☭ Mad Max ☭★ ⁞
279 / 84 / 12
Регистрация: 04.09.2013
Сообщений: 187
02.02.2016, 00:41
ComSpec,
выше уже сам нашел, спасибо!
0
4339 / 2129 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
07.02.2016, 23:43
Вот таким образом можно вывести содержимое (любое, и из браузера тоже) буфера именно с помощью js, но в кодировке OEM 866:
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
>nul chcp 1251
for /f "delims=" %%a in (
 'mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(clipboardData.getData('text'));close();"'
 ) do >nul chcp 866 & call :zp "%%~a"
exit
:zp
 echo.%~1>>"file.txt"
exit /b
.
0
 Аватар для ComSpec
3461 / 1999 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
08.02.2016, 05:57
Цитата Сообщение от alpap Посмотреть сообщение
Вот таким образом можно вывести содержимое (любое...) буфера...


Не-а.

alpap, я скопировал в буфер обмена сам Ваш код и, использовав его же в пакетном файле, получил результат в файле "file.txt":

Code
1
2
3
4
5
6
@echo off
 chcp 1251
exit
:zp
 echo.
exit /b
.

То есть код абсолютно не работает со специальными символами и будет также пропускать пустые строки.

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

Windows Batch file
1
2
@mshta "javascript:var x=clipboardData.getData('text');if(x) new ActiveXObject("^
Scripting.FileSystemObject").GetStandardStream(1).Write(x);close();">"file.txt"
.
0
4339 / 2129 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
08.02.2016, 15:53
Цитата Сообщение от ComSpec Посмотреть сообщение
И, самое главное, для того, чтобы записать целиком весь текст из буфера обмена в файл, абсолютно не нужны ни построчная обработка этого текста в цикле, ни смена кодовой страницы:
- лично у меня так скопированноую кириллицу в 866 не выводит, п9 - без проблем именно так.
С спецсимволами есть проблема, как побороть не знаю пока.
Сам пока этим пользуюсь:
Windows Batch file
1
powershell -sta /nologo /noprofile /command "Add-Type -AssemblyName System.Windows.Forms;[Windows.Forms.Clipboard]::GetText()">"file.txt"
тут только одна проблема (не у меня), не у всех есть powershell, или жалуются на тормоза.

Добавлено через 21 минуту
ComSpec, А как красиво скрутить:
Windows Batch file
1
2
3
4
5
@echo on
mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(clipboardData.getData('text'));close();">"file.txt"
@chcp 1251>nul
@<"file.txt">"nfile.txt" (for /f "delims=" %%i in ('find /n /v ""') do @chcp 866>nul & set x=%%i & cmd /v /c echo[!x:*]^^=!)
pause
?

Добавлено через 1 минуту
Вообще вывод будет в %~n1.txt, из контекстного меню управление.
0
4339 / 2129 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
09.02.2016, 15:54
Почему-то в конце каждой строки добавляется пробел
Windows Batch file
1
2
3
4
5
@echo off
mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(clipboardData.getData('text'));close();">$
@chcp 1251>nul
@<$>"%~1" (for /f "delims=" %%i in ('find /n /v ""') do @chcp 866>nul & set x=%%i & cmd /v /c echo[!x:*]^^=!) & del $
exit
.
0
 Аватар для ComSpec
3461 / 1999 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
21.02.2016, 03:59
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Цитата Сообщение от alpap Посмотреть сообщение
Вообще вывод будет в %~n1.txt, из контекстного меню...


alpap, ну не знаю, с чем Вы там экспериментируете, и каким преобразованиям подвергается изначальная кодировка текста. Вышеприведённый мной код сохраняет текст в файл ровно в той же кодировке, в которой он и был в момент его копирования (Win-1251 -- в Win-1251, OEM-866 -- в OEM-866).




Цитата Сообщение от alpap Посмотреть сообщение
Почему-то в конце каждой строки добавляется пробел
.



Вот он:
Windows Batch file
set x=%%i &
.
А вот так не будет:
Windows Batch file
set x=%%i&
.
И так не будет:
Windows Batch file
set "x=%%i" &
.




Цитата Сообщение от alpap Посмотреть сообщение
А как красиво скрутить..?


Без создания временного файла:

Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
 
>nul chcp 1251
mshta "javascript:var x=clipboardData.getData('text');if(x) new ActiveXObject("^
Scripting.FileSystemObject").GetStandardStream(1).Write(x);close();"|^
cmd/c "for /f "delims=" %%i in ('find /n /v ""') do @chcp 866>nul& set "^
x=%%i"& cmd/v/c echo[!x:*]^^=!">"file.txt"
 
exit/b
.
2
4339 / 2129 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
21.02.2016, 13:45
ComSpec,
Цитата Сообщение от ComSpec Посмотреть сообщение
Вышеприведённый мной код сохраняет текст в файл ровно в той же кодировке, в которой он и был в момент его копирования (Win-1251 -- в Win-1251, OEM-866 -- в OEM-866)
- да, но скопированная кириллица, например, отсюда сохраняется в 1251 кодировке (код п10), а у меня как txt так и bat создаются в 866, поэтому и использовал PS, но не на всех компьютерах он есть и нужна была альтернатива. За красивую доработку - огромное спасибо!
0
0 / 1 / 0
Регистрация: 28.07.2016
Сообщений: 142
10.10.2019, 00:15
А подскажите, пожалуйста, как здесь дополнительно проверить на количество символов? Чтоб не было больше 40.
Code
1
2
3
4
5
6
:GetClipboard [var]
for /f "delims=" %%i in ('
mshta "javascript:var s=clipboardData.getData('text');if (typeof(s)=='string')(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s));close();"
') do set ClipboardData=%%i
if defined ClipboardData (set %~1=%ClipboardData%) else (exit /b 1)
exit /b 0
0
 Аватар для volodin661
6566 / 2212 / 344
Регистрация: 10.12.2013
Сообщений: 7,620
10.10.2019, 00:45
Как слышится, так и пишется: (get-clipboard).length

Добавлено через 3 минуты
PowerShell
1
if ( (get-clipboard).length -gt 40 ) { echo "Длинновато" }
0
0 / 1 / 0
Регистрация: 28.07.2016
Сообщений: 142
10.10.2019, 00:59
Цитата Сообщение от volodin661 Посмотреть сообщение
Как слышится, так и пишется: (get-clipboard).length
Это powershell, а не batch. Нужен batch.
0
 Аватар для volodin661
6566 / 2212 / 344
Регистрация: 10.12.2013
Сообщений: 7,620
10.10.2019, 01:03
А что же ты тогда не сделал этого на cmd, раз он тебе нужен ?
1
0 / 1 / 0
Регистрация: 28.07.2016
Сообщений: 142
10.10.2019, 07:08
Цитата Сообщение от volodin661 Посмотреть сообщение
А что же ты тогда не сделал этого на cmd, раз он тебе нужен ?
Я спрашивал не про отдельную строку, а про добавление проверки в этот скрипт:

Code
1
2
3
4
5
6
:GetClipboard [var]
for /f "delims=" %%i in ('
mshta "javascript:var s=clipboardData.getData('text');if (typeof(s)=='string')(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s));close();"
') do set ClipboardData=%%i
if defined ClipboardData (set %~1=%ClipboardData%) else (exit /b 1)
exit /b 0
0
4339 / 2129 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
10.10.2019, 16:01
Цитата Сообщение от Sisin Посмотреть сообщение
в этот скрипт:
volodin661 говорит что если этот скрипт сделан не на чистом cmd, а с привлечением доп. средств, причем не извне внедренных, а встроенных, таких же как и PowerShell, то и вопрос с его стороны задан логично, почему сразу не сделать весь скрипт на этом (средстве) языке, тем более короче понятнее и удобнее. Надо в переменную, допишите ее вначале, вывод делать или нет уже условие будет решать или задача.
PowerShell
1
2
3
$cb=get-clipboard
$cb
if ( ($cb).length -gt 40 ) { echo "Длинновато" }
Добавлено через 6 минут
Sisin, тем более вы хоть представляете как вроде такую простую операцию по определению длины строки выполнить в cmd, примерно вот такие выкрутасы:
Windows Batch file
1
2
3
4
5
@echo off
set "str=stroka"
for /f "delims=" %%a in ('">$ cmd /v/c echo.!str!& echo.$"') do set /a len=%%~za-2& del $
echo %len%
pause
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.10.2019, 16:01
Помогаю со студенческими работами здесь

Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С
Массив С действительных чисел имеет 5 строк и 11 столбцов. Присвоить значение наименьшего элемента массива переменной М1, номер строки, где...

Как присвоить значение переменной, исходя из значения другой переменной?
Всем привет. Нужна помощь. Есть переменная, например &quot;month&quot; которая может принимать значения от 01 до 12, и переменная...

Как переменной описанной в программе присвоить значение переменной в Conditional Compilation Arguments?
Kak mozhno peremennij opisanoj v programme prisvoit` znachenie peremennoj v Conditional Compilation Arguments??? Eto nado chtoto tipa...

По значению переменной x (названию сезона) присвоить переменной t соответствующее значение и вывести на экран
Дано описание: Type сезон= (зима, весна, лето, осень); Var x: сезон; t: (тепло, жарко, холодно); По значению переменной x (названию...

Присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном случае
Имеется символьная переменная d, присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru