CMD/BAT - [решено] Разница при способах запуска .Bat

Ответить
Аватара пользователя
White-Lion

CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение White-Lion »

Всем доброго времени суток.

Имею файл pr.bat:


читать дальше »





Код: Выделить всё

@echo off
echo 1 - Установка Xerox 4118
set /p answer=Выберите принтер для установки:
if /i %answer%==1 ( 
  echo .
  echo ^> Установка Xerox 4118. ^<  
  echo 1 - Xerox 4118 IP 10.83.803.3.
  echo 2 - Xerox 4118 USB
  set /p answer1=Выберите Вариант принтера:
if /i %answer1%==1 (
  echo .
  echo ^>^> Установка Xerox 4118 IP ^<^<
cscript %SystemRoot%\system32\prnport.vbs -a -r IP_Xerox_4118_Lan -h 10.83.203.2 -o raw -n 9100
rundll32 printui.dll,PrintUIEntry /if /b "Office_3_Xerox4118_Lan" /f \\rysdc1\install$\Draivers\Printers\Xerox_4118\OriginalDiskDriver\Driver\Print\ADDPRINT\WINXP2K\wc4118.inf /r "IP_Xerox_4118_Lan" /m "Xerox WC 4118 Series PCL 6" /u
set prdef=Office_3_Xerox4118_Lan
)
if /i %answer1%==2 (
  echo .
  echo ^>^> Установка Xerox 4118 USB ^<^<
rundll32 printui.dll,PrintUIEntry /if /b "Office_3_Xerox4118_USB2" /f \\rysdc1\install$\Draivers\Printers\Xerox_4118\OriginalDiskDriver\Driver\Print\ADDPRINT\WINXP2K\wc4118.inf /r "USB002" /m "Xerox WC 4118 Series PCL 6" /u
set prdef=Office_3_Xerox4118_USB2
)
echo dryjet
set /p otv=Установить принтер по умолчанию? Yes, No:
if /i %otv%==y rundll32 printui.dll,PrintUIEntry /y /n %prdef%
)
pause

Файл отработан, но есть загвоздка.

ести запускаю из командной строки cmd, все работает.

Но когда просто запускаю сам файл pr.bat,

появляется
читать дальше »

Код: Выделить всё

1 - Установка Xerox 4118
Выберите принтер для установки:


И после выбора окно пропадает без дальнейших действий.

Что я сделал не так?
Аватара пользователя
ShaddyR

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение ShaddyR »

White-Lion, 7-ка? Разница в запуске - от имени админа или без.
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение Petya V4sechkin »

Цитата White-Lion:



Имею файл pr.bat



Попробуйте переименовать с расширением .cmd
Аватара пользователя
White-Lion

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение White-Lion »

ShaddyR,

Я администратор. пока все тестирую на своем компе. WinXPsp3.

Petya V4sechkin,

Уже пробовал. Тоже самое. Изображение



Может изменить в самом коде что-нибудь?
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение Petya V4sechkin »

White-Lion, поменяйте во всех операторах if условия, например:



Код:

Код: Выделить всё

if /i "%answer%"=="1"
Аватара пользователя
White-Lion

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение White-Lion »

Petya V4sechkin,

Исправил на:


читать дальше »

Код: Выделить всё

@echo off
echo 1 - Установка Xerox 4118
set /p answer=Выберите принтер для установки:
if /i "%answer%"=="1" ( 
  echo .
  echo ^> Установка Xerox 4118. ^<  
  echo 1 - Xerox 4118 IP 10.83.803.3.
  echo 2 - Xerox 4118 USB
  set /p answer1=Выберите Вариант принтера:
if /i "%answer1%"=="1" (
  echo .
  echo ^>^> Установка Xerox 4118 IP ^<^<
cscript %SystemRoot%\system32\prnport.vbs -a -r IP_Xerox_4118_Lan -h 10.83.203.2 -o raw -n 9100
rundll32 printui.dll,PrintUIEntry /if /b "Office_3_Xerox4118_Lan" /f \\rysdc1\install$\Draivers\Printers\Xerox_4118\OriginalDiskDriver\Driver\Print\ADDPRINT\WINXP2K\wc4118.inf /r "IP_Xerox_4118_Lan" /m "Xerox WC 4118 Series PCL 6" /u
set prdef=Office_3_Xerox4118_Lan
)
if /i "%answer1%"=="2" (
  echo .
  echo ^>^> Установка Xerox 4118 USB ^<^<
rundll32 printui.dll,PrintUIEntry /if /b "Office_3_Xerox4118_USB2" /f \\rysdc1\install$\Draivers\Printers\Xerox_4118\OriginalDiskDriver\Driver\Print\ADDPRINT\WINXP2K\wc4118.inf /r "USB002" /m "Xerox WC 4118 Series PCL 6" /u
set prdef=Office_3_Xerox4118_USB2
)
echo dryjet
set /p otv=Установить принтер по умолчанию? Yes, No:
if /i %otv%==y rundll32 printui.dll,PrintUIEntry /y /n %prdef%
)
pause



Начал ругаться на

непредвиденное начало Rundd32.



не помню гдето читал что нужно сделать вот так (добавил ^):


читать дальше »

Код: Выделить всё

if /i ^%otv%^=^=y ^rundll32 printui.dll,PrintUIEntry /y /n %prdef%



Но теперь при выборе "Выберите Вариант принтера:"

проскакивает все условия и попадает в самый последний if (принтер по умочсанию).





походу бат начинает дико нестабильно работать при большом колличестве if (особенно при их вложении).
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение Petya V4sechkin »

Цитата White-Lion:



if /i %otv%==y rundll32 printui.dll,PrintUIEntry /y /n %prdef%



А это почему не исправили?





Код:

Код: Выделить всё

if /i "%otv%"=="y" rundll32 printui.dll,PrintUIEntry /y /n %prdef%
Аватара пользователя
White-Lion

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение White-Lion »

Petya V4sechkin,

исправлял начинал ругаться на

непредвиденное начало Rundd32.



Хм.

Странно сейчас уже не ругается

но все также пропускает.



Убрал промежуточные pause перестал пропускать if при запуске bat из командной строки.

Но при обычном запуске все также пропускает.
Аватара пользователя
Petya V4sechkin

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение Petya V4sechkin »

White-Lion, в общем, так:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
echo 1 - Установка Xerox 4118
set /p answer=Выберите принтер для установки:
if /i "!answer!"=="1" (
  echo .
  echo ^> Установка Xerox 4118. ^<
  echo 1 - Xerox 4118 IP 10.83.803.3.
  echo 2 - Xerox 4118 USB
  set /p answer1=Выберите Вариант принтера:
if /i "!answer1!"=="1" (
  echo .
  echo ^>^> Установка Xerox 4118 IP ^<^<
cscript %SystemRoot%\system32\prnport.vbs -a -r IP_Xerox_4118_Lan -h 10.83.203.2 -o raw -n 9100
rundll32 printui.dll,PrintUIEntry /if /b "Office_3_Xerox4118_Lan" /f \\rysdc1\install$\Draivers\Printers\Xerox_4118\OriginalDiskDriver\Driver\Print\ADDPRINT\WINXP2K\wc4118.inf /r "IP_Xerox_4118_Lan" /m "Xerox WC 4118 Series PCL 6" /u
set prdef=Office_3_Xerox4118_Lan
)
if /i "!answer1!"=="2" (
  echo .
  echo ^>^> Установка Xerox 4118 USB ^<^<
rundll32 printui.dll,PrintUIEntry /if /b "Office_3_Xerox4118_USB2" /f \\rysdc1\install$\Draivers\Printers\Xerox_4118\OriginalDiskDriver\Driver\Print\ADDPRINT\WINXP2K\wc4118.inf /r "USB002" /m "Xerox WC 4118 Series PCL 6" /u
set prdef=Office_3_Xerox4118_USB2
)
echo dryjet
set /p otv=Установить принтер по умолчанию? Yes, No:
if /i "!otv!"=="y" rundll32 printui.dll,PrintUIEntry /y /n !prdef!
)
pause
Аватара пользователя
White-Lion

Re: CMD/BAT - [решено] Разница при способах запуска .Bat

Сообщение White-Lion »

Petya V4sechkin,

пришел к этому же выводу...... Изображение Изображение

но не успел написать. Огромное спасибо.



Заработало при обоих способах запуска.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»