Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставка текста из буфера обмена

Ответить
Настройки темы
CMD/BAT - [решено] Вставка текста из буфера обмена

Новый участник


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

Профиль | Сайт | Отправить PM | Цитировать


Всем салют! нужно вставить текст из буфера обмена в bat, ну т.е присвоить переменную %share%, и при вызывании %share% показывался текст из буфера обмена.
Пример:
Код: Выделить весь код
echo Ваш текст: %share%
для показа текста из буфера можно использовать:
Код: Выделить весь код
@ECHO OFF & MSHTA.EXE "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();" 1 | MORE 
Pause
только как присвоить переменную я не пойму...
Заранее спасибо!

Отправлено: 23:06, 05-06-2014

 

Ветеран


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

Профиль | Отправить PM | Цитировать


Цитата idlazarev_alex@vk:
присвоить переменную »
Может быть — «присвоить переменной»?

Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
    set sPrevCP=%%i
    chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
    `@"%systemroot%\system32\mshta.exe" "javascript:var s=clipboardData.getData('text'); {try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(s)} catch (e){}} close();" ^
    1^|more`
) do set share=%%i

chcp %sPrevCP% >nul

if defined share echo [%share%]

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:48, 06-06-2014 | #2



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

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


Новый участник


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

Профиль | Сайт | Отправить PM | Цитировать


Iska, спасибо, что поправили, ну и за скрипт тоже.

Отправлено: 10:30, 06-06-2014 | #3


Аватара для gora

Ушёл из жизни


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

Профиль | Отправить PM | Цитировать


Цитата idlazarev_alex@vk:
нужно вставить текст из буфера обмена »
Строго говоря вариант от коллеги Iska вставит в переменную только последнюю строку текста, ибо много строковых переменных в бат не бывает.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:46, 06-06-2014 | #4


Ветеран


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

Профиль | Отправить PM | Цитировать


gora, угу.

В принципе сами переменные окружения относятся к этому индифферентно:
Код: Выделить весь код
With WScript.CreateObject("WScript.Shell")
	.Environment("Process").Item("Sample") = "1 строка" & vbCrLf & "2 строка" & vbCrLf & "3 строка"
	.Run "cmd.exe /k set Sample"
End With
А вот с пакетными файлами — увы, не попадалось. Есть «финт ушами», создающий многострочную переменную окружения, но и там не всё гладко — вместо CrLf будет только Lf. Ещё неизвестно, что хуже выйдет.

Отправлено: 13:36, 06-06-2014 | #5


Аватара для Sisin

Старожил


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

Профиль | Отправить PM | Цитировать


Iska, а как сделать, чтобы в переменной share проверялось наличие ":" и тогда заменялось бы на "."???

Пример: В буфере "1111:1111", а надо, чтобы в таком случае стало бы "1111.1111".

Отправлено: 22:12, 04-10-2019 | #6


Ветеран


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

Профиль | Отправить PM | Цитировать


Sisin, опишите Вашу задачу полностью.

Отправлено: 00:27, 05-10-2019 | #7


Аватара для Sisin

Старожил


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

Профиль | Отправить PM | Цитировать


Цитата Iska:
Sisin, опишите Вашу задачу полностью. »
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
    set sPrevCP=%%i
    chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
    `@"%systemroot%\system32\mshta.exe" "javascript:var s=clipboardData.getData('text'); {try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(s)} catch (e){}} close();" ^
    1^|more`
) do set share=%%i

chcp %sPrevCP% >nul

if defined share echo [%share%]

endlocal
exit /b 0
Так это она и есть. Только перед if defined share echo [%share%] проверить наличие ":" и заменить на ".". И проверить соответствует ли содержание буфера маске 0000:00:00. Если нет, то выйти.

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

Отправлено: 00:54, 05-10-2019 | #8


Ветеран


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

Профиль | Отправить PM | Цитировать


Sisin, это не задача. Это уже выбранное решение. Я же хочу услышать саму изначальную задачу.

Цитата Sisin:
проверить соответствует ли содержание буфера маске 0000:00:00. Если нет, то выйти. Если да, то проверить наличие ":" и заменить на ".". »
Где заменить — в буфере обмена? Что есть «маска 0000:00:00» — цифры?

Отправлено: 01:32, 05-10-2019 | #9


Аватара для Sisin

Старожил


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

Профиль | Отправить PM | Цитировать


Цитата Iska:
Где заменить — в буфере обмена? Что есть «маска 0000:00:00» — цифры? »
Чтобы в этот момент if defined share echo [%share%] выводилось бы уже с заменой.
0000:00:00 - только цифры.

Отправлено: 01:42, 05-10-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вставка текста из буфера обмена

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - как вытащить картинку из буфера обмена батником angel_lyucifer Скриптовые языки администрирования Windows 25 21-11-2013 21:28
Интернет - [решено] проблемы вставки пароля из буфера обмена (IE explorer) shveicar Microsoft Windows 7 2 18-05-2012 02:18
Доступ - [решено] Не вставляются пароли из буфера обмена lesha111 Microsoft Windows 7 2 10-02-2012 22:00
[решено] вставка из буфера cher Хочу все знать 3 05-06-2011 07:06
Вставка многострочного текста из буфера обмена в однострочное окно. Do Not Disturb Microsoft Windows 95/98/Me (архив) 2 16-02-2007 19:42




 
Переход