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

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


Цитата 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]$" && (
имеет ограничение на количество цифр?? »
Потому что таковы ограничения findstr.exe.

Вновь повторю изначальный вопрос: какова сама задача?

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



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

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


Аватара для Sisin

Старожил


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

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


Цитата Iska:
Вновь повторю изначальный вопрос: какова сама задача? »
Есть батник, который создает папки, файлы, конвертирует, печатает и раскидывает их по нужным местам. В нем есть переменная вроде sShare, которая задается вручную. Вчера случайно нашел Ваш батник с первой страницы и подумал, что хорошая идея и надо ее взять на вооружение))) Но вот незадача, некоторые комбинации цифр оказываются длиннее. 12345678:12345678:12345678 - это номера папок в названии папки. Я просмотрел все варианты и самый большой в трех случаях 8 цифр. Как-то так.

т.е. переменной sShare надо передать значение до 12345678.12345678.12345678, а в буфер оно скидывается как 12345678:12345678:12345678.

я могу настроить, чтобы в буфер скидывались значения с добавленными впереди нулями и тогда маска будет одна - 12345678.12345678.12345678, ну или в случае оптимизации я уберу по 1 или 2 числам из каждой комбинации.

Последний раз редактировалось Sisin, 05-10-2019 в 19:07.


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


Ветеран


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

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


Sisin, есть смысл рассмотреть переход на WSH или сразу на PowerShell.

Или попросить кого-нибудь, кто хорошо владеет JScript, вставить проверку сразу сюда:
Код: Выделить весь код
"%systemroot%\system32\mshta.exe" "javascript:var s=clipboardData.getData('text'); {try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(s)} catch (e){}} close();

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


Аватара для Sisin

Старожил


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

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


Цитата Iska:
Sisin, есть смысл рассмотреть переход на WSH или сразу на PowerShell. »
А нельзя сделать так:
переменная a
переменная b
переменная c
переменная sShare

sShare = 56787655:78941564:98754567
найти первые цифры в sShare до ":"
a = 56787655
c = 78941564:98754567
sShare = c
найти первые цифры в sShare до ":"
b = 78941564
c = 98754567
проверить по маске 12345678 переменные a,b,c, если все ок, то
sShare = a&"."&b&"."&c = 56787655.78941564.98754567, если нет, то echo error.

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


Ветеран


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

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


Цитата Sisin:
А нельзя сделать так: »
можно
(именно под маску: 12345678:12345678:12345678)
Код: Выделить весь код
@echo off
set m=[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]

for /f "delims=" %%a in (
 'mshta "javascript:var x=clipboardData.getData('text');if(x)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(x);close();"'
) do set "z=%%a"& call :#
pause& exit

:#
 for /f "tokens=1-3 delims=:" %%a in ("%z%") do (
  echo %%a|>nul findstr /rc:"^%m%$"&& (set a1=%%a)|| (goto err)
  echo %%b|>nul findstr /rc:"^%m%$"&& (set a2=%%b)|| (goto err)
  echo %%c|>nul findstr /rc:"^%m%$"&& (set a3=%%c)|| (goto err)
 )
 echo %a1%.%a2%.%a3%
exit /b

:err
 echo ERROR& pause
exit /b
Это сообщение посчитали полезным следующие участники:

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


Аватара для Sisin

Старожил


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

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


Цитата alpap:
можно
(именно под маску: 12345678:12345678:12345678) »
Я же правильно понимаю, что могу внести несколько масок
set m1=[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
set m2=[0-9][0-9][0-9][0-9][0-9][0-9][0-9]
set m3=[0-9][0-9][0-9][0-9][0-9][0-9]

и для каждой a1,a2,a3 использовать свою?

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


Ветеран


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

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


Цитата Sisin:
sShare = 56787655:78941564:98754567
найти первые цифры в sShare до ":" »
Sisin, а когда там нет ни цифр, ни «:» — что прикажете делать?

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


Аватара для Sisin

Старожил


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

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


Цитата Iska:
Sisin, а когда там нет ни цифр, ни «:» — что прикажете делать? »
Вывести ошибку.

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


Ветеран


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

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


Sisin, Вы не поймёте. У нас есть ограничение по длине маски. И всякие обходные пути — не всегда работают. Проверьте, например:
Код: Выделить весь код
12345678:12345678:12345678:Жил:был:пёс
на коде коллеги alpap:

Данный вариант успешно проходит проверку, хотя и не должен.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:50, 05-10-2019 | #29


Аватара для Sisin

Старожил


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

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


Цитата Iska:
на коде коллеги alpap: »
Согласен, но вероятность такой комбинации стремится к нулю, а тем более на месте, где его будут запускать. Но я это учту.

Наверное, можно добавить после echo %%c|>nul findstr /rc:"^%m%$"&& (set a3=%%c)|| (goto err) строку, что если дальше идет еще что-то, то goto err.
Это выход??

Последний раз редактировалось Sisin, 05-10-2019 в 23:38.


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



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




 
Переход