![]() |
Вставка текста из буфера обмена
Всем салют! нужно вставить текст из буфера обмена в 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 Заранее спасибо! |
Цитата:
Код:
@echo off |
Iska, спасибо, что поправили, ну и за скрипт тоже.
|
Цитата:
|
gora, угу.
В принципе сами переменные окружения относятся к этому индифферентно: Код:
With WScript.CreateObject("WScript.Shell") |
Iska, а как сделать, чтобы в переменной share проверялось наличие ":" и тогда заменялось бы на "."???
Пример: В буфере "1111:1111", а надо, чтобы в таком случае стало бы "1111.1111". |
Sisin, опишите Вашу задачу полностью.
|
Цитата:
Код:
@echo off Или сначала проверить соответствует ли содержание буфера маске 0000:00:00. Если нет, то выйти. Если да, то проверить наличие ":" и заменить на ".". |
Sisin, это не задача. Это уже выбранное решение. Я же хочу услышать саму изначальную задачу.
Цитата:
|
Цитата:
0000:00:00 - только цифры. |
Опять Вы не о том, что я хотел бы услышать.
Ну, пробуйте: Скрытый текст
Код:
@echo off |
Powershell:
Код:
$var = Get-Clipboard |
Цитата:
если 000000:00:00 - тоже работает, а не должно. Проверка по маске нужна, чтобы в буфере не было комбинации отличной от маски. И чтобы выводилось echo "ERROR" в случае несоответствия, а затем exit /b 0. т.е. Если буфер соответствует маске 0000:00:00, то заменить ":" на "." и вывести echo [!sShare!] и exit /b 0, а если нет, то echo "ERROR" и exit /b 0. |
Цитата:
Код:
$var = Get-Clipboard |
DJ Mogarych, спасибо, но мне надо исключительно в bat.
|
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]" && ( |
Цитата:
|
Sisin, если error — тогда не 0.
Попробуйте так: Скрытый текст
Код:
@echo off |
Цитата:
|
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 выдает ошибку. |
Цитата:
Вновь повторю изначальный вопрос: какова сама задача? |
Цитата:
т.е. переменной sShare надо передать значение до 12345678.12345678.12345678, а в буфер оно скидывается как 12345678:12345678:12345678. я могу настроить, чтобы в буфер скидывались значения с добавленными впереди нулями и тогда маска будет одна - 12345678.12345678.12345678, ну или в случае оптимизации я уберу по 1 или 2 числам из каждой комбинации. |
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(); |
Цитата:
переменная 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. |
Цитата:
(именно под маску: 12345678:12345678:12345678) Код:
@echo off |
Цитата:
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 использовать свою? |
Цитата:
|
Цитата:
|
Sisin, Вы не поймёте. У нас есть ограничение по длине маски. И всякие обходные пути — не всегда работают. Проверьте, например:
Код:
12345678:12345678:12345678:Жил:был:пёс ![]() Данный вариант успешно проходит проверку, хотя и не должен. |
Цитата:
Наверное, можно добавить после echo %%c|>nul findstr /rc:"^%m%$"&& (set a3=%%c)|| (goto err) строку, что если дальше идет еще что-то, то goto err. Это выход?? |
Цитата:
Вы зря не хотите попробовать WSH/PoSH. Рано или поздно, но всё одно придётся переползать с пакетных файлов. |
Время: 07:50. |
Время: 07:50.
© OSzone.net 2001-