2017-01-27 9 views
1

私は、ユーザー入力に基づいてドライブをマップし、ドライブが最初に存在していないことを確認する非常に単純なバッチスクリプトであるものを作成しています。このWindowsバッチスクリプトが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%\から実行しています。 なぜネット使用を認識していないのか、私は本当に混乱しています。事前に感謝

答えて

2

は、問題は、この行です:

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

PATH環境変数は、既にWindowsで使用されます。コマンドコンプレッサーにsys(tem32|wow64)フォルダーにあるnet.exeのようなプログラムがどこにあるかを指示します。あなたはそれをあなたが気に入っているように上書きすることはできません。変数PATHを、ユーザーがマップするドライブのネットワークパスに設定すると、実際のPATH変数が上書きされます。

解決方法:異なる変数名を使用してください(例:mypath)。

+1

あなたの答えをありがとう、あなたは頭の上に釘を打ち、今働いています。 varpathのように、将来すべての変数にvarを付加します。私も環境変数をリセットすることができます私は表示されます。 – TLCONE

関連する問題