You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本需求:查看、删除并重新映射网络驱动器(更新密码)

嘿,我瞅了下你的批处理脚本问题——核心问题是原代码只打印了删除命令但根本没实际执行,而且嵌套的for循环逻辑有点冗余,还没处理WMIC输出自带的空行干扰。下面是给你改好的完整脚本,完美实现「删除指定服务器的所有映射→用新密码重新映射」的需求:

@echo off
setlocal enabledelayedexpansion
set "target_server=srv1"
set "domain_user=dom/uid1"
set "new_pwd=pwd"

:: 第一步:批量删除与目标服务器关联的所有网络驱动器
echo 正在清理与 %target_server% 相关的旧映射...
for /f "skip=1 tokens=1,2 delims=" %%a in ('wmic logicaldisk get Caption^, ProviderName ^| findstr /i /v "^$"') do (
    :: 过滤WMIC输出的空行,提取驱动器号和共享路径
    for /f "tokens=1,2" %%d in ("%%a") do (
        :: 检查当前共享是否属于目标服务器
        echo "%%e" | findstr /i "%target_server%" >nul
        if !errorlevel! equ 0 (
            :: 实际执行删除,/y参数跳过确认提示
            net use %%d /del /y
            echo 已删除旧映射: %%d -> %%e
        )
    )
)

:: 第二步:重新映射刚才删除的驱动器(复用原共享路径)
echo.
echo 正在创建新的网络驱动器映射...
:: 重新扫描目标服务器的共享(如果需要固定映射,也可以直接写死路径)
for /f "skip=1 tokens=1,2 delims=" %%a in ('wmic logicaldisk get Caption^, ProviderName ^| findstr /i /v "^$"') do (
    for /f "tokens=1,2" %%d in ("%%a") do (
        echo "%%e" | findstr /i "%target_server%" >nul
        if !errorlevel! equ 0 (
            set "share_path=%%e"
            set "drive_letter=%%d"
            :: 用新密码重新映射,/persistent:yes让映射重启后保留(可选)
            net use !drive_letter! !share_path! /user:%domain_user% %new_pwd% /persistent:yes
            echo 已完成新映射: !drive_letter! -> !share_path!
        )
    )
)

echo.
echo 所有操作完成!
pause
endlocal

关键改进点说明:

  • 真·执行删除命令:把原脚本的echo net use %%a /del改成net use %%d /del /y,/y参数自动跳过删除确认,不用手动干预。
  • 处理WMIC空行:用findstr /i /v "^$"过滤掉WMIC输出里的空行,避免循环处理无效内容导致的错误。
  • 延迟变量扩展:启用setlocal enabledelayedexpansion解决循环内变量值不更新的问题,确保重新映射时能正确获取驱动器号和共享路径。
  • 分步执行:先批量删完所有旧映射,再统一创建新映射,避免边删边建可能出现的资源冲突。
  • 友好日志:每一步都有明确的提示信息,方便你排查执行情况。

简化版(如果共享路径固定):

要是你不需要动态扫描,而是知道固定的驱动器号和共享路径,可以用更简洁的版本:

@echo off
set "drive=Z:"
set "share=\\srv1\your_shared_folder"
set "domain_user=dom/uid1"
set "new_pwd=pwd"

:: 先删除旧映射(即使不存在也不会报错)
net use %drive% /del /y >nul 2>&1
:: 用新密码创建新映射
net use %drive% %share% /user:%domain_user% %new_pwd% /persistent:yes
echo 已完成映射更新: %drive% -> %share%
pause

内容的提问来源于stack exchange,提问作者AxelF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:02:30