我正在创建一个非常简单的批处理脚本来根据用户输入映射驱动器,并检查驱动器是否已经先存在。
@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框一样,它也会默认它的位置。 我真的很困惑为什么它没有认识到网络使用。提前致谢
答案 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
。