为什么这个Windows批处理脚本无法找到程序net.exe?

时间:2017-01-27 16:35:06

标签: windows batch-file command-line

我正在创建一个非常简单的批处理脚本来根据用户输入映射驱动器,并检查驱动器是否已经先存在。

@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'不被视为内部或外部命令, 当脚本到达时(Net使用Z:"%path%") 虽然如果我在cmd窗口中运行它,命令的输入将起作用。

我已经检查了脚本的位置,并且它从C:\ Users \%username%\中运行,就像cmd框一样,它也会默认它的位置。 我真的很困惑为什么它没有认识到网络使用。提前致谢

1 个答案:

答案 0 :(得分:2)

问题在于这一行:

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

Windows已使用PATH环境变量。它告诉命令解释器在哪里找到net.exe文件夹中的sys(tem32|wow64)等程序。您不能随意覆盖它,并希望一切都能在之后正常运行。您将变量PATH设置为您希望用户映射的驱动器的网络路径,这将覆盖实际的PATH变量。

解决方案:使用其他变量名称,例如mypath