无忧启动论坛

标题: 【20230914】访问共享路径工具(Win&PE) [打印本页]

作者: BEIKING    时间: 2023-6-27 17:02
标题: 【20230914】访问共享路径工具(Win&PE)
本帖最后由 BEIKING 于 2023-9-14 17:16 编辑
  1. @echo off
  2. if /i "%UserName%" == "SYSTEM" (Set PE=1&Goto GotAdmin) else (reg query "HKLM\SYSTEM\ControlSet001\Control\MiniNT" 1>nul 2>nul&&(Set PE=1&Goto GotAdmin))
  3. :BatchGotAdmin
  4. Set _Args=%*
  5. if `%1` neq `` Set "_Args=%_Args:"=""%"
  6. if exist %WinDir%\System32\fltMC.exe fltMC 1>nul 2>nul||mshta VBScript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c """"%~f0"" %_Args%""",,"runas",1)(Window.Close) 2>nul&&Exit /b

  7. :GotAdmin
  8. Title 访问共享&Color 2f
  9. MODE 1>nul 2>nul&&MODE con: Cols=54 Lines=15
  10. Pushd "%CD%"&cd /d "%~dp0"

  11. :Init :: 内部参数初始化
  12. Set Auto=1
  13. Set ShareOff=1
  14. find /? 1>nul 2>nul&&Set "findstr=find.exe"
  15. findstr /? 1>nul 2>nul&&Set "findstr=findstr.exe"
  16. if not defined findstr Call :EchoX "cf.: 找不到 find.exe 文件,按任意键退出 。。。"&Pause >nul&Exit /b

  17. :ChkSer :: 检测共享服务状态
  18. %WinDir%\System32\sc query LanmanWorkstation|%findstr% " 1060:" 1>nul 2>nul
  19. if '%ErrorLevel%' == '0' Set err= Workstation(LanmanWorkstation)服务不存在 !!&Goto SErr
  20. %WinDir%\System32\sc query LanmanWorkstation|%findstr% "1  STOPPED" 1>nul 2>nul
  21. if '%ErrorLevel%' == '0' Set err= Workstation(LanmanWorkstation)服务未开启 !!&Goto SErr
  22. %WinDir%\System32\sc query lmhosts|%findstr% " 1060:" 1>nul 2>nul
  23. if '%ErrorLevel%' == '0' Set err= TCP/IP NetBIOS Helper(lmhosts)服务不存在 !!&Goto SErr
  24. %WinDir%\System32\sc query lmhosts|%findstr% "1  STOPPED" 1>nul 2>nul
  25. if '%ErrorLevel%' == '0' Set err= TCP/IP NetBIOS Helper(lmhosts)服务未开启 !!&Goto SErr

  26. :RConfig :: 读取配置文件。优先级: new参数 > 参数1文件 > 脚本同名_参数1.txt > 脚本同名.txt
  27. Set "Config=%~n0.txt"
  28. if `%1` neq `` (if /i `%1` neq `new` (Set "Config=%1") else Goto Input)
  29. Set "Config=%Config:"=%"
  30. if not exist "%Config%" (if not exist "%~n0_%Config%.txt" (Goto Input) else Set "Config=%~n0_%Config%.txt")
  31. for /f "usebackq tokens=1* delims=:=" %%i in ("%Config%") do (
  32.     if "%%i" == "路径" Set "unc=%%j"
  33.     if "%%i" == "用户" Set "user=%%j"
  34.     if "%%i" == "密码" Set "pass=%%j"
  35.     if "%%i" == "盘符" Set "dsk=%%j"
  36. )
  37. if defined unc Set "路径=%unc:&=^&%"
  38. if defined user Set "用户=%user%"
  39. if defined pass Set "密码=%pass:&=^&%"
  40. if defined dsk Set "盘符=%dsk%"

  41. :SConfig :: 显示配置参数
  42. Call :EchoX "xx::  " "70.:[配置参数]"
  43. echo  ┌→→→→→→→→→→→→→→→→→→→→→→→→┐
  44. echo  丨⊙共享路径:%路径%
  45. echo  丨○登录用户:%用户%
  46. echo  丨○登录密码:%密码%
  47. echo  丨○映射盘符:%盘符%
  48. echo  └→→→→→→→→→→→→→→→→→→→→→→→→┘

  49. :Auto :: 自动化处理
  50. if not defined unc Goto Input&if not defined user Goto Input
  51. if "%Auto%" == "1" Goto Check

  52. :Manual :: 手动处理
  53. Call :EchoX "xx::               " "e5::打开共享(O)丨 修改参数(S)"&choice /c os
  54. if '%ErrorLevel%' == '1' Goto Check
  55. if '%ErrorLevel%' == '2' Goto Input

  56. :Input :: 输入配置参数
  57. Cls&for /f "usebackq" %%i in (`echo %Config%`) do Set "title=%%~ni%%~xi"
  58. Title -^>%title%
  59. Call :EchoX "xx::  " "70.:[配置参数]"
  60. echo  ┌→→→→→→→→→→→→→→→→→→→→→→→→→
  61. Set unc=&Call :EchoX "xx:: 丨" "cf::⊙" "共享路径:"&Set /p unc=
  62. Set user=&Call :EchoX "xx:: 丨○登录用户:"&Set /p user=
  63. Set pass=&Call :EchoX "xx:: 丨○登录密码:"&Set /p pass=
  64. Set dsk=&Call :EchoX "xx:: 丨○映射盘符:"&Set /p dsk=
  65. echo  └→→→→→→→→→→→→→→→→→→→→→→→→→

  66. :Check :: 检测配置参数
  67. if not defined unc Set err= 参数不完整,共享路径不能为空 !!&Goto NErr
  68. if "%unc:~0,2%" neq "\" Set "unc=\\%unc%"
  69. if "%unc:~-1%" == "" Set "unc=%unc:~0,-1%"
  70. for /f "usebackq tokens=1,* delims=" %%i in (`echo %unc:~2%`) do Set sub=%%j
  71. Set "dsk=%dsk::=%"
  72. if "%dsk%" == ":=" (Set dsk=) else Set "dsk=%dsk%:"
  73. if not defined sub (if defined dsk Set subdsk=%dsk%&Set dsk=) else Set sub=
  74. if not defined user (Set Guest=0&Set "user=administrator")

  75. :Login :: 共享路径登录验证
  76. REM 已存在共享路径处理
  77. Set OC=&if "%ShareOff%" == "1" (net use|find /i "%unc%%sub%" 1>nul 2>nul||Goto LogOff) else Goto LogOff
  78. Call :EchoX "xx::  " "70:: 共享已存在," "e5::继续打开(O)丨 关闭共享(C)"&choice /c OC
  79. Set OC=%ErrorLevel%
  80. :LogOff :: 若共享路径登录成功过,则删除登录后短时间内仍能访问 (存在延迟)
  81. net use "%unc%%sub%" /delete 1>nul 2>nul
  82. if defined dsk if exist "%dsk%" (
  83.     echo.|net use %dsk% /delete 1>nul 2>nul
  84.     if exist "%dsk%" (
  85.         echo.&Call :EchoX "xx::   已存在与 %dsk% 的连接,是否强行断开并关闭?(y/n): "
  86.         net use %dsk% /delete 1>nul 2>nul
  87.     )
  88. )
  89. net use "%unc%%sub%" /user:"%user%" "试错,清除登录缓存!" 1>nul 2>nul
  90. net use "%unc%%sub%" /user:".\%user%" "试错,清除登录缓存!" 1>nul 2>nul
  91. if "%OC%" == "2" (echo.&Call :EchoX "  " "cf.: 共享已关闭,但存在延迟短时间内仍能访问!"&Call :Delay 5 +&Exit /b) else echo.&Call :EchoX "xx::  " "e5.: √正在登录共享路径 。。。     "
  92. if defined pass (net use %dsk% "%unc%%sub%" /user:"%user%" "%pass%" 1>nul 2>nul) else (echo.|net use %dsk% "%unc%%sub%" /user:"%user%" 1>nul 2>nul)
  93. if '%ErrorLevel%' neq '0' if defined pass (net use %dsk% "%unc%%sub%" /user:"%user%" "%pass%" 1>nul 2>nul) else (echo.|net use %dsk% "%unc%%sub%" /user:"%user%" "" 1>nul 2>nul)
  94. if '%ErrorLevel%' neq '0' if defined pass (net use %dsk% "%unc%%sub%" /user:".\%user%" "%pass%" 1>nul 2>nul) else (echo.|net use %dsk% "%unc%%sub%" /user:".\%user%" 1>nul 2>nul)
  95. if '%ErrorLevel%' neq '0' if defined pass (net use %dsk% "%unc%%sub%" /user:".\%user%" "%pass%" 1>nul 2>nul) else (echo.|net use %dsk% "%unc%%sub%" /user:".\%user%" "" 1>nul 2>nul)
  96. if '%ErrorLevel%' neq '0' if "%Guest%" == "0" (Set Guest=1&Set "user=guest"&Goto Login)
  97. if '%ErrorLevel%' neq '0' if exist "%dsk%" Set err= %dsk:~0,1% 盘符已存在,且无法主动断开连接 !!&Goto NErr
  98. if '%ErrorLevel%' neq '0' Set err= 验证不通过,请检查参数配置或非内网用户 !!&Goto NErr
  99. if defined subdsk if not defined dsk (Call :SelSub&echo.&Set dsk=%subdsk%&Set subdsk=&Goto Login)
  100. %WinDir%\explorer.exe "%unc%%sub%"
  101. if not defined PE (Goto Success) else (Set n=0&Set have=)
  102. for /l %%i in (1,1,50) do for /f "tokens=2*" %%j in ('reg query "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths" /v "url%%i" 2^>nul') do (Set n=%%i&if /i "%unc%%sub%" == "%%k" Set have=1)
  103. if defined have (Goto Success) else (Set /a n+=1)
  104. reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths" /f /v "url%n%" /t REG_SZ /d "%unc%%sub%" 1>nul 2>nul

  105. :Success
  106. if /i `%1` == `new` if exist "%~n0.txt" for /l %%i in (1,1,100) do if not exist "%~n0_%%i.txt" (copy /y "%~n0.txt" "%~n0_%%i.txt"&Goto WConfig)
  107. :WConfig :: 登录成功,参数写入配置文件
  108. (echo 路径:=%unc:&=^&%
  109. echo 用户:=%user%
  110. echo 密码:=%pass:&=^&%
  111. echo 盘符:=%dsk%
  112. ) >"%Config%"
  113. Exit /b

  114. :SelSub :: 不支持选择带空格二级目录
  115. setlocal enabledelayedexpansion
  116. :SSLoop
  117. Set n=0&for /f "skip=7 tokens=1,* delims= " %%i in ('net view "%unc%"') do Set /a n+=1
  118. if !n! gtr 5 (Set /a n+=9&MODE 1>nul 2>nul&&MODE con: Cols=54 Lines=!n!)
  119. Cls&Call :EchoX "cf.:  根路径不允许映射盘符,请选择二级目录↓"
  120. Set n=0&for /f "skip=7 tokens=1,* delims= " %%i in ('net view "%unc%"') do (
  121.     if !n! gtr 0 echo         !n!.!share!
  122.     Set /a n+=1&Set sub!n!=%%i&Set share=%%i
  123. )
  124. if !n! == 0 echo   资源列表是空的。
  125. echo -----------------------------------------------------
  126. Set choice=&Call :EchoX "xx::  "&Set /p choice=选择:
  127. Set "choice=%choice: =%"
  128. (if not defined sub%choice% Goto SSLoop)&(if "%choice%" == "!n!" Goto SSLoop)
  129. Set sub=\!sub%choice%!
  130. endlocal&Set sub=%sub%
  131. Goto :eof

  132. :SErr :: 服务报错
  133. if defined err (Cls&Call :EchoX "cf.:%err%"&Pause >nul&Exit /b) else Goto :eof

  134. :NErr :: 验证报错
  135. if defined err (Cls&Call :EchoX "cf.:%err%"&Call :EchoX "e5.: 按任意键,重新配置参数 。。。"&Pause >nul&Goto Input) else Goto :eof

  136. :Delay :: 延迟操作 <%1=Sec|延迟秒数> [%2=+|显示倒计时]。
  137. if `%2` == `+` (Set n=2) else Set n=1
  138. if exist %WinDir%\System32\timeout.exe (timeout /t %1 %n%>nul) else if exist %WinDir%\System32\choice.exe (choice /t %1 /d y /n >nul) else ping 127.1 -n %1 >nul
  139. Goto :eof

  140. :EchoX :: 显示彩色文字 (不支持半角字符 \ / : * ? " < >|. % ! ~)。
  141. setlocal enabledelayedexpansion
  142. Set echox=EchoX.exe&&!echox! 1>nul 2>nul||(Set echox=&mkdir "%TEMP%\EchoX" 2>nul)
  143. for %%a in (%*) do (
  144.     Set "param=%%a"&Set "param=!param:"=!"
  145.     Set "color=!param:~0,2!"&(if not exist %WinDir%\System32\findstr.exe if not defined echox Set "color=xx")
  146.     Set n=0&(if "!param:~2,2!" == "::" Set n=1)&(if "!param:~2,2!" == ".:" Set n=2)
  147.     if !n! gtr 0 (
  148.         if /i "!color!" == "xx" (Set /p="_!param:~4!"<nul) else (Set param=%%~nxa&if defined echox (!echox! -c !color! -n "!param:~4!") else (Pushd "%TEMP%\EchoX" 2>nul&>"!param:~4!",Set /p= <nul&findstr /a:!color! .* "!param:~4!*"&del "!param:~4!"&Popd))
  149.         if !n! == 2 echo.
  150.     ) else if defined param Set /p="_!param!"<nul
  151. )
  152. endlocal
  153. Goto :eof
复制代码
【20230630】
增加映射盘符功能

【20230914】
1、删除基本不会用到的Ping功能检测
2、增加已打开连接关闭功能。
3、如果要保持旧版习惯,不提示关闭已打开连接。
     在 脚本 15 行:Set ShareOff=1 注释或改0

注意:附件为旧版,我现在编辑帖子清不了附件好奇怪,要新版复制代码到记事本保存。

2023-07-01_114919.png (13.6 KB, 下载次数: 163)

2023-07-01_114919.png

2.png (31.9 KB, 下载次数: 139)

2.png

访问共享.rar

3.04 KB, 下载次数: 146, 下载积分: 无忧币 -2


作者: BEIKING    时间: 2023-6-27 17:06
根据读取配置文件的优先级: new参数 > 参数1文件 > 脚本同名_参数1.txt > 脚本同名.txt
各位自己体验
作者: ynifcp12    时间: 2023-6-27 17:07
支持一下
作者: fulibo    时间: 2023-6-27 17:26
学习了!
作者: yc2428    时间: 2023-6-27 18:00
谢谢分享
作者: wanigu    时间: 2023-6-27 18:35
谢谢楼主的分享!
作者: JayeDieyan    时间: 2023-6-27 18:40
谢谢分享
作者: zhangz9    时间: 2023-6-27 18:42
多谢分享
作者: 旁观者清    时间: 2023-6-27 19:04
谢谢分享。
作者: 2012zsw    时间: 2023-6-27 19:17
谢谢分享辛苦了
作者: lixiangliuyi    时间: 2023-6-27 19:41
提前设置好共享文件夹的访问权限,建议添加everyone读取权限,密码为空
net use z: \\计算机名\共享文件名  "此处输密码,没有的不填" /user:计算机名\用户名(设置为everyone最好)
作者: yyz2191958    时间: 2023-6-27 21:53
谢谢分享
作者: sndnvaps    时间: 2023-6-27 23:14
谢谢楼主分享。
作者: hhello    时间: 2023-6-28 08:12
谢了分享
作者: iaanqrm    时间: 2023-6-28 08:32

作者: 51xp    时间: 2023-6-28 09:42
谢谢楼主的分享!
作者: zx6769    时间: 2023-6-28 13:23
谢楼主的分享!
作者: fegr    时间: 2023-6-28 13:52
谢谢分享
作者: chibuzhu    时间: 2023-6-28 14:21
感谢分享
作者: cyanxx    时间: 2023-6-28 14:29

感谢分享
作者: 2018rt    时间: 2023-6-30 20:15
感谢分享
作者: BEIKING    时间: 2023-6-30 20:58
【20230630】
增加映射盘符功能
作者: mtbin    时间: 2023-6-30 23:36
进来学习学习
作者: ideamake    时间: 2023-7-2 11:39
不错

作者: 717758565    时间: 2023-7-2 12:38
能在pe系统里用吗
作者: BEIKING    时间: 2023-7-2 22:20
717758565 发表于 2023-7-2 12:38
能在pe系统里用吗

Win&PE通用,当然前提要PE支持
作者: daatseng    时间: 2023-7-2 22:44
优秀人才
作者: yyz2191958    时间: 2023-7-2 22:51
楼主辛苦了
作者: lx5815    时间: 2023-7-3 08:57
楼主辛苦了 谢谢
作者: cyanxx    时间: 2023-7-3 09:04
支持一下 谢谢
作者: 不败地意志    时间: 2023-7-3 09:04
这个有点高端了!谢谢分享!
作者: Fastwingo    时间: 2023-8-27 10:19
感谢分享
作者: yyz2191958    时间: 2023-8-27 11:02
这个强大
作者: martin313    时间: 2023-9-1 14:16
感谢分享

批处理就解决了,厉害
作者: xiangsui    时间: 2023-9-1 14:25
要增加一个 清除访问的  !!!
作者: BEIKING    时间: 2023-9-1 15:57
xiangsui 发表于 2023-9-1 14:25
要增加一个 清除访问的  !!!

可以考虑

作者: megatron    时间: 2023-9-1 15:59
多谢大佬分享
作者: 2010yuhongxi    时间: 2023-9-1 16:21
感谢分享
作者: BEIKING    时间: 2023-9-14 17:16
【20230914】
1、删除基本不会用到的Ping功能检测
2、增加已打开连接关闭功能。
3、如果要保持旧版习惯,不提示关闭已打开连接。
     在 脚本 15 行:Set ShareOff=1 注释或改0
作者: 2010laodu    时间: 2023-9-14 19:49
谢谢分享
作者: hjzwzq    时间: 2023-9-14 21:33
支持一下
作者: mafa3    时间: 2023-9-14 21:42
看见高手
作者: ppll2030    时间: 2023-9-14 23:26
附件要从第一步上传文件那里删除才可以。
作者: yanjiandiannao    时间: 2023-9-15 16:35
不错不错
作者: lr    时间: 2024-5-11 14:50
谢谢分享
作者: 八叶伞    时间: 2024-10-9 20:24
感谢分享
作者: wn168cn@163.com    时间: 2024-10-9 20:32
谢谢分享
作者: tcog    时间: 2024-10-9 22:13
多谢老板
作者: 2012huguoliang    时间: 2024-10-31 13:59
直接一闪而过




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./) Powered by Discuz! X3.3