【问题标题】:Why is this Windows Batch script not able to find the program net.exe?为什么此 Windows 批处理脚本无法找到程序 net.exe?
【发布时间】:2017-01-27 16:35:05
【问题描述】:

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

@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 use Z: "%path%") 虽然如果我要在 cmd 窗口中运行该命令的输入将起作用。

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

【问题讨论】:

    标签: windows batch-file command-line


    【解决方案1】:

    问题出在这一行:

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

    PATH 环境变量已被 Windows 使用。它告诉命令解释器在哪里可以找到像net.exe 这样的程序,它位于您的sys(tem32|wow64) 文件夹中。您不能随心所欲地覆盖它并期望之后一切正常。您将变量 PATH 设置为您希望用户映射的驱动器的网络路径,这会覆盖实际的 PATH 变量。

    解决方案:使用不同的变量名,例如 mypath

    【讨论】:

    • 感谢您的回答,您一针见血,它现在正在工作。将来我会像 varpath 一样在所有变量前面加上 var。我也看看能不能重置环境变量。
    猜你喜欢
    • 1970-01-01
    • 2020-08-25
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2013-03-11
    • 2015-10-24
    相关资源
    最近更新 更多