Борьба со сценарием командной строки Windows, я просто не могу приступить к работе.
В основном я пытаюсь запустить программу vnctv.exe с параметрами HOST ipaddress PORT 5900 PASSWORD x, однако я хочу запускать программу только с IP-адресами компьютеров, которые в данный момент находятся в сети.
Я пробовал несколько разных вещей, но не могу заставить что-либо работать должным образом.
Кажется, что когда я запускаю cmd и печатаю команды по отдельности, все они работают правильно, но когда я запускаю его в файле .bat, это не получается.
Я попробовал enabledelayedexpansion, поэтому мне не нужно было звонить, но я не мог заставить это работать.
Цикл for сначала перебирает 30-255 адресов. Следующий цикл проверяет IP-адрес и находит уровень потерь. Если это 0, то мне нужно добавить этот адрес в параметр запуска для vnctv.exe. Я попытался повторить файл, удалив символы \ n, но не смог заставить это работать. Таким образом, скрипт должен добавить параметр в переменную, но он не работает.
вот оно
set _megga=vnctv.exe
FOR /L %%A IN (253,1,255) DO (
FOR /F "tokens=2 delims=(%%" %%B
IN ('PING -w 500 -n 1 91.40.20.%%A -w 500 -n 1 ^|find "loss"')
DO ( if %%B EQU 0 call :exec ))
)
:exec
set %%_megga=%_megga% HOST 91.40.20.%%A PORT 5900 PASSWORD x
goto :EOF
echo %%_megga > run.bat
run.bat
и вот вывод
Z:\>set _megga=vnctv.exe
Z:\>FOR /L %A IN (253 1 255) DO (FOR /F "tokens=2 delims=(%" %B IN ('PING -w 500
-n 1 91.40.20.%A -w 500 -n 1 |find "loss"') DO (if %B EQU 0 call :exec ) )
Z:\>(FOR /F "tokens=2 delims=(%" %B IN ('PING -w 500 -n 1 91.40.20.253 -w 500 -n
1 |find "loss"') DO (if %B EQU 0 call :exec ) )
Z:\>(if 0 EQU 0 call :exec )
Z:\>set %_megga=vnctv.exe HOST 91.40.20.%A PORT 5900 PASSWORD x
Z:\>goto :EOF
Z:\>(FOR /F "tokens=2 delims=(%" %B IN ('PING -w 500 -n 1 91.40.20.254 -w 500 -n
1 |find "loss"') DO (if %B EQU 0 call :exec ) )
Z:\>(if 0 EQU 0 call :exec )
Z:\>set %_megga=vnctv.exe HOST 91.40.20.%A PORT 5900 PASSWORD x
Z:\>goto :EOF
Z:\>(FOR /F "tokens=2 delims=(%" %B IN ('PING -w 500 -n 1 91.40.20.255 -w 500 -n
1 |find "loss"') DO (if %B EQU 0 call :exec ) )
Z:\>(if 100 EQU 0 call :exec )
Z:\>set
%_megga=vnctv.exe HOST 91.40.20.%A PORT 5900 PASSWORD x
_megga=vnctv.exe
Z:\>set %_megga=vnctv.exe HOST 91.40.20.%A PORT 5900 PASSWORD x
Z:\>goto :EOF
Когда я установил, он должен читать, например, 91.40.20.254 вместо% A, а также он делает 2 разные переменные
Спасибо за любую помощь
Адам
попробовал это, но все еще получает% 1 или 1 вместо фактического значения
set _megga=vnctv.exe
FOR /L %%A IN (253,1,255) DO (
FOR /F "tokens=2 delims=(%%" %%B IN
('PING -w 500 -n 1 91.40.20.%%A -w 500 -n 1 ^|find "loss"')
DO ( if %%B EQU 0 call :exec %%A))
:exec
set %%_megga=%%_megga HOST 91.40.20.%%1 PORT 5900 PASSWORD x
goto :EOF