无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5175|回复: 44
打印 上一主题 下一主题

[原创] 【20230914】访问共享路径工具(Win&PE)

    [复制链接]
跳转到指定楼层
1#
发表于 2023-6-27 17:02:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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, 下载次数: 127)

2023-07-01_114919.png

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

2.png

访问共享.rar

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

评分

参与人数 5无忧币 +23 收起 理由
xiangsui + 3 很给力!
一生一世2006 + 5 很给力!
smartcowboy + 5 很给力!感谢分享和发布原创内容,论坛有你.
azhong123456 + 5 神马都是浮云
879792799 + 5 赞一个!

查看全部评分

2#
 楼主| 发表于 2023-6-27 17:06:41 | 只看该作者
根据读取配置文件的优先级: new参数 > 参数1文件 > 脚本同名_参数1.txt > 脚本同名.txt
各位自己体验
回复

使用道具 举报

3#
发表于 2023-6-27 17:07:28 来自手机 | 只看该作者
支持一下
回复

使用道具 举报

4#
发表于 2023-6-27 17:26:17 | 只看该作者
学习了!
回复

使用道具 举报

5#
发表于 2023-6-27 18:00:06 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
发表于 2023-6-27 18:35:09 | 只看该作者
谢谢楼主的分享!
回复

使用道具 举报

7#
发表于 2023-6-27 18:40:09 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
发表于 2023-6-27 18:42:10 | 只看该作者
多谢分享
回复

使用道具 举报

9#
发表于 2023-6-27 19:04:29 | 只看该作者
谢谢分享。
回复

使用道具 举报

10#
发表于 2023-6-27 19:17:47 | 只看该作者
谢谢分享辛苦了
回复

使用道具 举报

11#
发表于 2023-6-27 19:41:48 | 只看该作者
提前设置好共享文件夹的访问权限,建议添加everyone读取权限,密码为空
net use z: \\计算机名\共享文件名  "此处输密码,没有的不填" /user:计算机名\用户名(设置为everyone最好)
回复

使用道具 举报

12#
发表于 2023-6-27 21:53:25 | 只看该作者
谢谢分享
回复

使用道具 举报

13#
发表于 2023-6-27 23:14:13 | 只看该作者
谢谢楼主分享。
回复

使用道具 举报

14#
发表于 2023-6-28 08:12:34 | 只看该作者
谢了分享
回复

使用道具 举报

15#
发表于 2023-6-28 08:32:37 | 只看该作者
回复

使用道具 举报

16#
发表于 2023-6-28 09:42:14 | 只看该作者
谢谢楼主的分享!
回复

使用道具 举报

17#
发表于 2023-6-28 13:23:34 | 只看该作者
谢楼主的分享!
回复

使用道具 举报

18#
发表于 2023-6-28 13:52:54 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

19#
发表于 2023-6-28 14:21:53 | 只看该作者
感谢分享
回复

使用道具 举报

20#
发表于 2023-6-28 14:29:44 | 只看该作者

感谢分享
回复

使用道具 举报

21#
发表于 2023-6-30 20:15:41 | 只看该作者
感谢分享
回复

使用道具 举报

22#
 楼主| 发表于 2023-6-30 20:58:13 | 只看该作者
【20230630】
增加映射盘符功能
回复

使用道具 举报

23#
发表于 2023-6-30 23:36:49 | 只看该作者
进来学习学习
回复

使用道具 举报

24#
发表于 2023-7-2 11:39:04 | 只看该作者
不错
回复

使用道具 举报

25#
发表于 2023-7-2 12:38:24 来自手机 | 只看该作者
能在pe系统里用吗

点评

Win&PE通用,当然前提要PE支持  详情 回复 发表于 2023-7-2 22:20
回复

使用道具 举报

26#
 楼主| 发表于 2023-7-2 22:20:53 | 只看该作者
717758565 发表于 2023-7-2 12:38
能在pe系统里用吗

Win&PE通用,当然前提要PE支持
回复

使用道具 举报

27#
发表于 2023-7-2 22:44:04 | 只看该作者
优秀人才
回复

使用道具 举报

28#
发表于 2023-7-2 22:51:22 | 只看该作者
楼主辛苦了
回复

使用道具 举报

29#
发表于 2023-7-3 08:57:19 | 只看该作者
楼主辛苦了 谢谢
回复

使用道具 举报

30#
发表于 2023-7-3 09:04:05 | 只看该作者
支持一下 谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-1 15:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表