Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум 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
Благодарности: 8088

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


Опять Вы не о том, что я хотел бы услышать.

Ну, пробуйте:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

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

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 sShare=%%i

>nul chcp %sPrevCP%

if defined sShare (
	echo %sShare%| >nul 2>&1 findstr.exe /i /r /c:"[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]" && (
		set sShare=%sShare::=.%
		echo [!sShare!]
	)
)

endlocal
exit /b 0

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



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

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


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Powershell:
Код: Выделить весь код
$var = Get-Clipboard
if ($var -match ':') {
$var = $var -replace ':','.'
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


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


Аватара для Sisin

Старожил


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

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


Цитата Iska:
Ну, пробуйте: »
Если в буфере 0000:00:00, то работает,
если 000000:00:00 - тоже работает, а не должно.

Проверка по маске нужна, чтобы в буфере не было комбинации отличной от маски. И чтобы выводилось echo "ERROR" в случае несоответствия, а затем exit /b 0.

т.е.
Если буфер соответствует маске 0000:00:00, то заменить ":" на "." и вывести echo [!sShare!] и exit /b 0,
а если нет, то echo "ERROR" и exit /b 0.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:21, 05-10-2019 | #13


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Цитата Sisin:
Если в буфере 0000:00:00, то работает,
если 000000:00:00 - тоже работает, а не должно. »
Код: Выделить весь код
$var = Get-Clipboard
if ($var -match "^\d{4}:") {
$var = $var -replace ':','.'
}
else {
write-host -fore red "ERROR!!!1"
}

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 11:58, 05-10-2019 | #14


Аватара для Sisin

Старожил


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

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


DJ Mogarych, спасибо, но мне надо исключительно в bat.

Отправлено: 12:19, 05-10-2019 | #15


Ветеран


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

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


Sisin, моя недоработка, приношу Вам свои извинения.

Добавьте в единственной строке то, что помечено выделенным:
Код: Выделить весь код
echo %sShare%| >nul 2>&1 findstr.exe /i /r /c:"^[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]$" && (
или:
Код: Выделить весь код
echo %sShare%| >nul 2>&1 findstr.exe /i /r /b /e /c:"[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]" && (
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:15, 05-10-2019 | #16


Аватара для Sisin

Старожил


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

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


Цитата Iska:
Добавьте в единственной строке то, что помечено выделенным: »
а echo "ERROR" и exit /b 0?

Отправлено: 14:23, 05-10-2019 | #17


Ветеран


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

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


Sisin, если error — тогда не 0.

Попробуйте так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

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

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 sShare=%%i

>nul chcp %sPrevCP%

if defined sShare (
	echo %sShare%| >nul 2>&1 findstr.exe /i /r /c:"^[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]$" && (
		set sShare=%sShare::=.%
		echo [!sShare!]
	) || (
		echo Error
		exit /b 2
	)
) else (
	echo Error
	exit /b 1
)

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

Отправлено: 14:31, 05-10-2019 | #18


Аватара для Sisin

Старожил


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

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


Цитата Iska:
Попробуйте так: »
Огромное спасибо. Все как надо!

Отправлено: 14:44, 05-10-2019 | #19


Аватара для Sisin

Старожил


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

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


Iska, подскажите, пожалуйста, почему эта строка:

echo %sShare%| >nul 2>&1 findstr.exe /i /r /c:"^[0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]$" && (

имеет ограничение на количество цифр??
например, я хочу увеличить маску до 12345678:12345678:12345678, изменил на:
"^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]:[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]:[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$"

а строка не срабатывает. Вроде ограничений быть не должно.

Если попробовать добавить цифры в маску здесь: http://forum.oszone.net/post-2890775.html#post2890775

то findstr.exe выдает ошибку.

Отправлено: 16:40, 05-10-2019 | #20



Компьютерный форум 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




 
Переход