Войти

Показать полную графическую версию : [решено] Прошу указать на мои ошибки


asacyra
18-12-2020, 23:11
Пишу скрипт для установки принтеров
@echo off
ECHO.
:m1
ECHO 1. 2035
ECHO 2. 2535
ECHO 3. exit
set /p choice=Выбор:
if '%choice%'=='1' goto 2035
if '%choice%'=='2' goto 2535
if '%choice%'=='3' goto (exit)
ECHO.

Echo.
Echo.
goto m1
pause >nul


------------------------------------------------------------------------------------
goto start
:2035
for /f "tokens=2-3 delims=:(" %%i in ('ipconfig /all^|find "IPv4"') do (
Echo IP %computername% =%%i

for /f "tokens=1-4 delims=. " %%A in ("%%i") do (
echo.
cls
echo printer = %%A.%%B.%%C.20

))
Echo.
echo Начитаю ставить
Echo.

cscript //Nologo C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnport.vbs -a -r 1 -h %%A.%%B.%%C.10 -o RAW -n 9100
pause


Получается такой результат, как во вложение. Как можно это исправить?

Iska
19-12-2020, 00:15
asacyra, сначала оберните код в тэг «code».

asacyra
19-12-2020, 04:36
asacyra, сначала оберните код в тэг «code».

Выполнено

YuS_2
19-12-2020, 10:05
Как можно это исправить? »
Это исправить...
Если не вдаваясь в подробности, то так:
@echo off
ECHO.
:m1
ECHO 1. 2035
ECHO 2. 2535
ECHO 3. exit
set /p choice=Выбор:
if '%choice%'=='1' goto 2035
if '%choice%'=='2' goto 2535
if '%choice%'=='3' goto (exit)
ECHO.

Echo.
Echo.
goto m1
pause >nul

------------------------------------------------------------------------------------
goto start
:2035
for /f "tokens=2-3 delims=:(" %%i in ('ipconfig /all^|find "IPv4"') do (
Echo IP %computername% =%%i
for /f "tokens=1-4 delims=. " %%A in ("%%i") do (
echo.
cls
echo printer = %%A.%%B.%%C.20
set var=%%A.%%B.%%C
)
)
Echo.
echo Начинаю ставить
Echo.

cscript //Nologo C:\Windows\System32\Printing_Admin_Scripts\ru-RU\prnport.vbs -a -r 1 -h %var%.10 -o RAW -n 9100
pause

Если с подробностями, то в коде много лишнего, но главное:
Вы не учитываете, что IP может быть более одного и в итоге, в переменной %var% окажется только последняя сеть...




© OSzone.net 2001-2012