2017-01-27 4 views
1

Я создаю то, что должно было быть очень простым командным сценарием для сопоставления диска на основе пользовательского ввода и проверки того, что диск уже не существует первым.Почему этот скрипт Windows Batch не может найти программу net.exe?

@echo off 
:EnterInfo 
set /P path=Please Enter The Path You Want To Map(EG: \\server\folder)   
set /P z=Please Chose A drive Letter To Map.(EG Z) 
goto :CheckExist 

:CheckExist 
%z%:\ 
pause 
if exist %z%:\ (
    set /P Sure=A Drive Is Already Using Drive Letter %path%:\ Are You Sure You Want To Replace It?[Y/N] 
    if /I "%Sure%" EQU "Y" goto :SetDrive 
    if /I "%Sure%" EQU "N" exit) 
goto :SetDrive 

:SetDrive 
C: 
dir 
net use z: "%path%" 
pause 

Адрес: до сих пор. Я получаю сообщение об ошибке: «net» не распознается как внутренняя или внешняя команда, , когда скрипт переходит к (использование сети Z: «% path%») Хотя вход в команду будет работать, если i чтобы запустить его в CMD-окне.

Я проверил местоположение сценария, и он работает от C: \ Users \% username% \, как и поле cmd, по умолчанию это место. Я действительно смущен, почему он не признает использование сети. Заранее спасибо

ответ

2

Проблема эта линия:

set /P path=Please Enter The Path You Want To Map(EG: \\server\folder)   

PATH переменная среды уже используется Windows. Он сообщает командному интерпретатору, где можно найти программы, такие как net.exe, который находится в папке sys(tem32|wow64). Вы не можете просто перезаписать его, как вам угодно, и ожидать, что после этого все будет работать правильно. Вы устанавливаете переменную PATH как сетевой путь для диска, который вы хотите отобразить на карте, который перезаписывает фактическую переменную PATH.

Решение: Используйте другое имя переменной, например, mypath.

+1

Благодарим вас за ответ, вы поразили гвоздь на голове, теперь он работает. Я буду префикс всех переменных с var в будущем, как varpath. Я посмотрю, могу ли я также сбросить переменную среды. – TLCONE

 Смежные вопросы

  • Нет связанных вопросов^_^