[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3868
  • Репутация:127

    [+] [-]
cartmenezz, сформулируй коротко, что сделать-то надо? Я теряюсь на просторах твоих "эссе" ah

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 9 лет 3 месяца
  • Сообщений: 527
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, aa
ну...
нужно прописать в ярлык такую строку для выполнения:
C:\Windows\System32\cmd.exe /c @echo off& echo|set /p"=ANY_TEXT"| Clip
где ANY_TEXT это текст, полученный после раскрытия переменной var
команда для создания ярлыка:
Shortcut.exe /F:"%link_dir%\test.lnk" /A:C /T:"%ComSpec%" /P:"/c @echo off& echo|set /p=%var%| Clip" /R:7 /H:1585)
проблем бы не было, если бы ее удалось изменить так:
Shortcut.exe /F:"%link_dir%\test.lnk" /A:C /T:"%ComSpec%" /P:"/c @echo off& echo|set /p"=%var%"| Clip" /R:7 /H:1585)
тогда бы получилось добиться той строки, что я написал в начале сообщения, с кавычками вокруг "=ANY_TEXT", тогда бы можно было использовать спецсимволы при вводе значения переменной var.
Но, программа Shortcut.exe воспринимает кавычки как обрамление своих параметров
...
пока что-то кое-как получилось только с добавлением записи в доп.файл, чего хотелось бы избежать

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3868
  • Репутация:127

    [+] [-]
cartmenezz, шиза полная:
set var="Hello, world!"
set var=%var:"="""""""%
Shortcut.exe /F:"test.lnk" /A:C /T:"%ComSpec%" /P:"/c @echo off& echo|set /p""=%var%""& pause" /R:7 /H:1585
ag
---
Я убрал Clip и написал паузу, сам уж поправишь...

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 9 лет 3 месяца
  • Сообщений: 527
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, попробовал
@echo off
cls
cd /d "%~dp0"
set "link_dir=%AppData%\Microsoft\Windows\Start Menu\Programs\Accessories"
:1
set var=& set /p "var=Enter: "|| GoTo :1
set var=%var:"="""""""%
Shortcut.exe /F:"%link_dir%\test.lnk" /A:C /T:"%ComSpec%" /P:"/c @echo off& echo|set /p""=%var%""& Clip" /R:7 /H:1585
echo.
pause
exit /b
Но так и при вводе текста надо использовать кавычки, а это немного не то - нужно вводить только тот текст, который должен копироваться:
если вводить с кавычками, то спору нет - все норм
Но, если использовать спецсимволы, то проблема никуда не девается:

в ярлык попало только:
C:\Windows\System32\cmd.exe /c @echo off& echo|set /p"=""1

Добавлено через 5 минут 31 секунда:
пока самый простой рабочий вариант получился такой:
@echo off
cls
cd /d "%~dp0"
set "link_dir=%AppData%\Microsoft\Windows\Start Menu\Programs\Accessories"
:1
set var=& set /p "var=Enter: "|| GoTo :1
for /f "delims=" %%G in ('echo "%var%"') do >"%link_dir%\test_1.txt" (echo|set /p=%%G)
Shortcut.exe /F:"%link_dir%\test_1.lnk" /A:C /T:"%ComSpec%" /P:"/c @echo off& <test_1.txt Clip" /R:7 /H:1585)
echo.
pause
exit /b

Картинка

но блин... этот доп.файл test_1.txt .... и ярлык будет не один, соответственно и текстовик не один...

[Цитировать]

    dimo70
  • 17296
  • Стаж: 7 лет
  • Сообщений: 3787
  • Репутация:27

    [+] [-]
  • Откуда: BG
Сделал батник для рестарта сетевого адаптера. Только не знаю как определить и задать через переменную имя сетевого адаптера, чтоб батник срабатывал автоматом.
netsh interface show interface
rem определения имя сетевого адаптера
pause
netsh interface set interface "Ethernet 2" admin=disable
timeout /t 4
netsh interface set interface "Ethernet 2" admin=enable

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    Gvint64
  • 24573
  • Стаж: 4 года 7 месяцев
  • Сообщений: 626
  • Репутация:72

    [+] [-]
dimo70, aa Переименуй нужные адаптеры например в Lan1, Lan2, Lan3,..... Lan255 ag

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 9 лет 3 месяца
  • Сообщений: 527
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
dimo70, Попробуйте:
@echo off
cls
echo.
set /a num=0
for /f "skip=3 tokens=1-3,* delims= " %%G in ('netsh interface show interface') do (
set /a num+=1
call echo [%%num%%] %%J
)
echo.
:1
set var=& set /p "var=> "|| GoTo :1
set /a num=2+%var%
for /f "skip=%num% tokens=1-3,* delims= " %%G in ('netsh interface show interface') do (
echo.
echo netsh interface set interface "%%J" admin=disable
netsh interface set interface "%%J" admin=disable
echo.
timeout /t 4 >nul
echo netsh interface set interface "%%J" admin=enable
netsh interface set interface "%%J" admin=enable
echo.
pause
exit
)
на Win10 1809 Ru отрабатывает нормально-все будет зависить от того, какой выхлоп дает в вашей системе команда:
netsh interface show interface
у меня это выглядит так:

т.е. нужно пропустить 3 строки (пустая+заголовок+---), потом взять названия из 4го столбца.-Если у вас это команда выдает результат в немного другом формате - придется подправить

[Цитировать]

    dimo70
  • 17296
  • Стаж: 7 лет
  • Сообщений: 3787
  • Репутация:27

    [+] [-]
  • Откуда: BG
cartmenezz, работает нормально, большое спасибо!
А хотел еще спросить нужно ли ставить какой то таймаут после выключении сетевого адаптера, или ето лишнее?
Проблема связана с рутером наверное, потому что несмотря что задал статический IP на сервер другие компютеры теряют иногда связь с сервером и приходиться перезагружать сервер. aa

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 9 лет 3 месяца
  • Сообщений: 527
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
90476нужно ли ставить какой то таймаут после выключении сетевого адаптера, или ето лишнее?
вот тут, честно говоря, понятия не имею... в принце и без него должно работать.. зависит от адаптера, нужен ли ему отдых между сменами состояний

[Цитировать]

    dimo70
  • 17296
  • Стаж: 7 лет
  • Сообщений: 3787
  • Репутация:27

    [+] [-]
  • Откуда: BG
cartmenezz, спасибо еще раз. Время покажет. az

_________________
Подпись отключена за нарушение правил форума

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 9 лет 3 месяца
  • Сообщений: 527
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Я тут потихоньку просвещаюсь, возникла парочка вопросов,.. не к спеху, просто оставлю это здесь))
Может будет у кого лишняя минутка...
1) Читал касаемо использования CALL SET, занесло меня на cyberforum, заметил одну интересную вещь:

Картинка


EnableDelayedExpansion пытаюсь всячески избегать, поэтому и разбираюсь с CALL SET, но вот что привлекло внимание, так это вормулировка: "например, командой Call" - то есть можно использовать не CALL а что-то другое? (конечно, можно было бы там и спросить, но тут как-то роднее ah )
2) После того как тут упоминали сайт ss64.com как довольно авторитетный, стал все чаще туда поглядывать. К сожалению языковой барьер дает о себе знать, поэтому "поглядываю" не так часто как хотелось бы, да и не все понимаю (гугл переводчик не во всех моментах спасает).
Собственно, некоторое время читал там справку по команде FOR - ss64_for, есть там такая "рекомендация":
%%G is a good choice because it does not conflict with any of the pathname format letters (a, d, f, n, p, s, t, x) and provides the longest run of non-conflicting letters for use as implicit parameters.
G > H > I > J > K > L > M
Format letters are case sensitive, so using a capital letter is also a good way to avoid conflicts %%A rather than %%a.
Особо не вникал, просто взял на вооружение, теперь стараюсь использовать %%G в циклах. Но сейчас возникла необходимость в задействовании множества токенов, поэтому решил перечитать, что же там за конфликты возможны.
Я правильно понял, что без каких либо проблем могу использовать в цикле все буквы от A до Z, а под конфликтом с "pathname format letters" имеется ввиду лишь возможная путаница, которая может возникнуть (типа взяли %%n, потом придется использовать %%~nn - не комильфо). Но даже если бы я использовал %%~nn (или типо того), это бы без проблем всегда нормально работало без всяких "конфликтов", главное не запутаться, правильно? А если мне все эти модификации имени точно в данном цикле не понадобятся, то тем более могу брать весь диапазон A-Z и не париться?

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3868
  • Репутация:127

    [+] [-]
90510могу брать весь диапазон A-Z и не париться?
Ты можешь брать даже всякое непотребное, навроде # или @ или '
ab-Насчёт "например" я тоже не понял. Можно использовать call не только с set, но и всякое:
call echo %%var%%
call del %%file%%
call reg add %%key%% ...
И вот тут важно не пересечься с переменными цикла %%v, %%f, %%k

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 9 лет 3 месяца
  • Сообщений: 527
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
90513И вот тут важно не пересечься с переменными цикла %%v, %%f, %%k
Благодарю, на конкретно примере гораздо понятнее)) Этот момент учту.
90513Ты можешь брать даже всякое непотребное, навроде # или @ или '
Это уже лишнее)) Вообще по началу решил обойтись 15ю буквами, мне надо анализировать путь до текущей директории, и получить из него путь на один уровень вверх.
Так как это путь не в винде, а на подключённом устройстве то нет возможности использова pushd/popd или ещё что-нибудь...
Все что я могу, это выполнив команду ls на родительский каталог "mnt/sdcard" получить список с вложенными файлами и папками. Я сделал запись всего этого дела в файл, с нумерацией, При вводе номера снова выполняется та же команда, только уже к пути одного из этих каталог..
Т.е. допустим я перешёл в каталог "/mnt/sdcard/Download", теперь он текущий, и т.д... Хочется иметь возможность возвращаться выше, например по цифре "0"..
Так что я сделал разбор в цикле пути текущего каталога, взял за разделитель "/", и сделал поочередную проверку:
если существует 3й токен, то верхний каталог равен первым 2ум,
если существует 4й токен, то верхний каталог равен первым 3ем,
и т.д...
Но выглядит это конечно так себе, плюс есть ограничение по глубине (так как дальше заглавных букв я идти не хотел, то получается уйдя вглубь ниже чем на 24 каталога, верхний уже будет некорректным)
...
но вроде как пришла мысль как это дело переиграть иначе))
Добавлено через 5 минут 8 секунд:
Было так (это я еще не весь алфавит брал):

1

:2
for /f "tokens=1-15 delims=/" %%G in ('echo %Dir%') do (
if not [%%I]==[] set "old_Dir=/%%G/%%H"
if not [%%J]==[] set "old_Dir=/%%G/%%H/%%I"
if not [%%K]==[] set "old_Dir=/%%G/%%H/%%I/%%J"
if not [%%L]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K"
if not [%%M]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L"
if not [%%N]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L/%%M"
if not [%%O]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L/%%M/%%N"
if not [%%P]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L/%%M/%%N/%%O"
if not [%%Q]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L/%%M/%%N/%%O/%%P"
if not [%%R]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L/%%M/%%N/%%O/%%P/%%Q"
if not [%%S]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L/%%M/%%N/%%O/%%P/%%Q/%%R"
if not [%%T]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L/%%M/%%N/%%O/%%P/%%Q/%%R/%%S"
if not [%%U]==[] set "old_Dir=/%%G/%%H/%%I/%%J/%%K/%%L/%%M/%%N/%%O/%%P/%%Q/%%R/%%S/%%T"
)
exit /b
Стало так:

2

for /f "delims=" %%G in ('echo %Dir%') do set "old_Dir=%%~pG"
set "old_Dir=%old_Dir:\=/%"
set "old_Dir=%old_Dir:~0,-1%"
exit /b
...
пока тестирую, но вроде работает))
-
Вроде норм, ляпота!))

Видео

... пока, правда, ничего кроме хождения по папкам он не делает... но это дело наживное))

[Цитировать]

    cartmenezz
  • 1384
  • Стаж: 9 лет 3 месяца
  • Сообщений: 527
  • Репутация:14

    [+] [-]
  • Откуда: Калининград
Ander_73, Узнал сегодня кое-что новое.
у меня разбирается в цикле вывод команды для получения списка папок/файлов:
for /f "useback delims=" %%G in (`2^>nul adb shell ls '%Dir%'`) do ...
и я думал что это дело нормально работает, вроде как во все каталоги получалось зайти..
НО, это было до тех пор пока в переменную %Dir% не попал путь со скобками в названии каталога - сразу вылет.
...
Долго думал что можно предпринять, на удивление сработало:
for /f "useback delims=" %%G in (`"2>nul adb shell ls '%Dir%'"`) do ...
Не знал что можно команду в кавычки брать...
Отсюда вопрос:
Это обычное дело, или возможно какой-то баг моей версии 10ки? Будет ли это работать всегда, в том числе на 8ке/7ке?
Или для этого должны звезды сойтись определенным образом?))

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3868
  • Репутация:127

    [+] [-]
90530Это обычное дело
Да.
Без экранирования кавычками, скобка после подстановки переменной станет закрывающей для команды for. После чего вся конструкция посыпется.

Страница 66 из 94


Показать сообщения:    

Текущее время: 24-Дек 16:49

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы