【桌面运维】Windows使用批处理脚本快速创建访问共享文件的快捷方式

前言

前阵子要给公司很多电脑安装访问共享文件夹快捷方式,方便各部门使用共享文件夹访问共享文件,实现内部办公资源共享,前期没有设置,现在又没有专门的分发软件,需要每台电脑都去帮忙新建一个访问共享文件的快捷方式
你要告诉每个人访问共享的账号密码让他们登录,登录时可能遇到的问题下面会讲到。
你要教他们设置又比较费劲,“公司有IT,干嘛还要自己动手?”
要去对每个人的鼠标摸一下还是也还是比较油腻的。

于是寻思使用Windows批处理脚本实现快速批量创建快捷方式及Windows管理凭据

关于Windows共享的知识

先来讲一下Windows下访问共享文件夹的一点小知识。

由于Windows的策略默认会使用当前账号(普遍为Administrator)密码去访问共享文件夹(共享服务器端的同名账户是禁用的或不允许空密码访问,当客户端还用同名账户去验证的时候,服务器返回这个账户禁止,客户端就不换用户直接终止了共享访问),因此访问共享文件时会出现两种情景。

  1. 当电脑设置有密码时提示账号密码错误,也就会有输入账号密码的弹窗出现。
    登录共享
  2. 在没有设置密码的电脑访问时,因为不允许使用空密码访问的策略,则会提示无法访问共享,并且没有出现输入账号密码的提示框,无法使用共享账号登录。
    无法访问共享
  • 解决方案 1:
    修改组策略,不启用空密码只能控制台登录,使得电脑没设置密码的情况下也会出现登录的弹窗,即可以使用账号登录。
    策略设置
  • 解决方案 2:
    设置Windows凭据(当Windows凭据管理其中设置有账号密码时,会使用设置的账号密码访问),让系统使用凭据去访问共享文件夹。
    凭据管理器
    简单流程如下:
    流程图

    一种解决方案

    面对可能出现的问题,我的解决方案就是设置一个Windows凭据和一个桌面快捷方式,实现快捷登录访问共享。
    因此,我要设置的就是
  1. 自动创建一个访问共享文件夹的桌面快捷方式
    创建快捷方式
  2. 自动创建部门对应的Windows登录凭据
    创建Windows凭据

    批处理脚本的实现

    通过这个思路,我就可以做一个.cmd或者.bat的批处理文件来实现自动创建桌面 快捷方式Windows凭据
    然后将脚本文件通过公司企业邮箱发送给各部门同事们,让他们双击安装就可以了。
    脚本分析:
    1
    //使用cmdkey命令创建Windows凭据,然后调用vbscript生成桌面快捷方式
    生成快捷方式
    完整脚本如下:

    简约版

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    @echo off
    echo 此脚本用于创建部门扫描文件盘快捷方式
    cmdkey /add:192.168.1.240 /user:hr /pass:hr@2019
    set Program=\\192.168.240\人力资源部
    set LnkName=人力资源部扫描盘
    set WorkDir=
    set Desc=人力资源部部扫描文件存放共享盘
    if not defined WorkDir call:GetWorkDir "%Program%"
    (echo Set WshShell=CreateObject("WScript.Shell"^)
    echo strDesKtop=WshShell.SpecialFolders("DesKtop"^)
    echo Set oShellLink=WshShell.CreateShortcut(strDesKtop^&"\%LnkName%.lnk"^)
    echo oShellLink.TargetPath="%Program%"
    echo oShellLink.WorkingDirectory="%WorkDir%"
    echo oShellLink.WindowStyle=1
    echo oShellLink.Description="%Desc%"
    echo oShellLink.Save)>makelnk.vbs
    echo 正在创建桌面快捷方式...请勿退出,耐心等待!
    makelnk.vbs
    del /f /q makelnk.vbs
    mshta vbscript:msgbox("设置完成!--IT部,By Wolfman",64,"IT部")(Window.close)
    exit
    goto :eof
    :GetWorkDir
    set WorkDir=%~dp1
    set WorkDir=%WorkDir:~,-1%
    goto :eof
    简约版效果展示
    简约版效果

    美化版

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    @echo off
    title 安装扫描盘--By Wolfman
    mode con cols=43 lines=8
    color 1f
    echo ※※※※※※※※※※※※※※※※※※※※※※
    echo ※ 公司专用共享盘快捷方式安装脚本 ※
    echo ※ IT部出品 ※
    echo ※先关掉360,腾讯管家,金山毒霸等杀毒软件 ※
    echo ※※※※※※※※※※※※※※※※※※※※※※
    echo.
    pause
    cmdkey /add:192.168.1.240 /user:hr /pass:hr@2019
    set Program=\\192.168.1.240\人力资源部
    set LnkName=人力资源部扫描盘
    set WorkDir=
    set Desc=人力资源部扫描共享盘
    if not defined WorkDir call:GetWorkDir "%Program%"
    (echo Set WshShell=CreateObject("WScript.Shell"^)
    echo strDesKtop=WshShell.SpecialFolders("DesKtop"^)
    echo Set oShellLink=WshShell.CreateShortcut(strDesKtop^&"\%LnkName%.lnk"^)
    echo oShellLink.TargetPath="%Program%"
    echo oShellLink.WorkingDirectory="%WorkDir%"
    echo oShellLink.WindowStyle=1
    echo oShellLink.Description="%Desc%"
    echo oShellLink.Save)>makelnk.vbs
    echo ※※※※※※※※※※※※※※※※※※※※※
    echo ※ ※
    echo ※ 执行完毕 ※
    echo ※ ※
    echo ※※※※※※※※※※※※※※※※※※※※※
    makelnk.vbs
    del /f /q makelnk.vbs
    exit
    goto :eof
    :GetWorkDir
    set WorkDir=%~dp1
    set WorkDir=%WorkDir:~,-1%
    goto :eof
    美化版效果展示
    美化版效果
    美化版效果2

    优化简约版

    更简约的直接用windows的mklink命令
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    echo 此脚本用于创建部门扫描文件盘快捷方式--IT菜
    ::自定义登录凭据及共享路径
    set UserName=hr
    set PassWord=hr@2019
    set IPAddr=192.168.1.240
    set FileName=人力资源部
    set LnkName=人资专用共享
    cmdkey /add:"%IPAddr%" /user:"%UserName%" /pass:"%PassWord%"
    mklink /d %userprofile%\desktop\"%LnkName%" ^\^\"%IPAddr%"^\"%FileName%"
    mshta vbscript:msgbox("设置完成!--IT部,By Cai",64,"IT部")(Window.close)
    exit
    mklink /d 目录/快捷方式名 \\网络路径

这样,我们就能快速的创建共享文件的快捷方式了!!