Показать полную графическую версию : [решено] Вставка текста из буфера обмена
почему эта строка:
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.
Вновь повторю изначальный вопрос: какова сама задача?
Вновь повторю изначальный вопрос: какова сама задача? »
Есть батник, который создает папки, файлы, конвертирует, печатает и раскидывает их по нужным местам. В нем есть переменная вроде sShare, которая задается вручную. Вчера случайно нашел Ваш батник с первой страницы и подумал, что хорошая идея и надо ее взять на вооружение))) Но вот незадача, некоторые комбинации цифр оказываются длиннее. 12345678:12345678:12345678 - это номера папок в названии папки. Я просмотрел все варианты и самый большой в трех случаях 8 цифр. Как-то так.
т.е. переменной 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();
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.
А нельзя сделать так: »
можно
(именно под маску: 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
можно
(именно под маску: 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 использовать свою?
sShare = 56787655:78941564:98754567
найти первые цифры в sShare до ":" »
Sisin, а когда там нет ни цифр, ни «:» — что прикажете делать?
Sisin, а когда там нет ни цифр, ни «:» — что прикажете делать? »
Вывести ошибку.
Sisin, Вы не поймёте. У нас есть ограничение по длине маски. И всякие обходные пути — не всегда работают. Проверьте, например:
12345678:12345678:12345678:Жил:был:пёс
на коде коллеги alpap:
https://i.imgur.com/lmmn4m3.png
Данный вариант успешно проходит проверку, хотя и не должен.
на коде коллеги alpap: »
Согласен, но вероятность такой комбинации стремится к нулю, а тем более на месте, где его будут запускать. Но я это учту.
Наверное, можно добавить после echo %%c|>nul findstr /rc:"^%m%$"&& (set a3=%%c)|| (goto err) строку, что если дальше идет еще что-то, то goto err.
Это выход??
Наверное, можно добавить после echo %%c|>nul findstr /rc:"^%m%$"&& (set a3=%%c)|| (goto err) строку, что если дальше идет еще что-то, то goto err.
Это выход?? »
Нет. В этом месте строка уже нарезана на части (из которых берётся ровно три первых).
Вы зря не хотите попробовать WSH/PoSH. Рано или поздно, но всё одно придётся переползать с пакетных файлов.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.