找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 74850|回复: 24

[网络连接] 【已解决】NET USE在批处理for循环中无法使用的问题

[复制链接]
发表于 2024-3-1 10:10:00 | 显示全部楼层 |阅读模式
本帖最后由 SeanJuicer 于 2024-3-1 21:20 编辑
  1. set H_error=
  2. for /f "tokens=2 delims=。 " %%i in ('net use H: \\192.168.1.100\app "/user:admin" "admin" /persistent:no ^| findstr [0123456789]') do (
  3.     set H_error=%%i
  4. )
  5. echo. %H_error%
  6. pause
复制代码
这段代码意在遇到net use错误时输出错误代码,但是使用中永远会提示错误代码
  1. 发生系统错误 1219:

  2. 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接
复制代码
命令从for循环中单独拎出来就可以顺利映射

希望各位大神给点指点,感谢!

已经没有任何映射或者其它用户挂载,并且在执行前已经net use * /del /y

用自增变量计数或者在for里写goto跳转出来,也是同样的结果,计数也是显示循环了一次而已

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-3-1 10:13:52 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2024-3-1 10:17 编辑
  1. for /f "tokens=2 delims=。 " %%i in ('net use H: \\192.168.1.100\app "/user:admin" "admin" /persistent:no 2^>^&1 ^| findstr [0123456789]') do echo,%%i
复制代码

  1. @echo off
  2. set H_error=
  3. for /f "tokens=2 delims=。 " %%i in ('net use H: \\192.168.1.100\app "/user:admin" "admin" /persistent:no ^| findstr [0123456789]') do (
  4.     set H_error=%%i
  5. )
  6. echo,%H_error%
  7. pause
复制代码
 楼主| 发表于 2024-3-1 10:17:15 | 显示全部楼层
回复 2# qixiaobin0715
  1. do echo,%%i
复制代码
请问,只是do那里不同吗?我需要set 成一个变量,后面再输出
 楼主| 发表于 2024-3-1 10:18:10 | 显示全部楼层
回复 2# qixiaobin0715


    好的,我现在就试一下,感谢
 楼主| 发表于 2024-3-1 10:20:25 | 显示全部楼层
回复 2# qixiaobin0715


    好像还是提示1219
 楼主| 发表于 2024-3-1 11:41:27 | 显示全部楼层
回复 2# qixiaobin0715


    我又去测试了一下不同机器,有些电脑又是没问题的,我下午再检查一下,可能不是代码的问题。

先谢谢。
发表于 2024-3-1 11:41:48 | 显示全部楼层
  1. @echo off
  2. set H_error=
  3. for /f "tokens=2 delims=。 " %%i in ('net use H: \\192.168.0.7\111 "/user:admin" "Aa123456" /persistent:no 2^>^&1 ^| findstr [0123456789]') do (
  4.     set H_error=%%i
  5. )
  6. echo,%H_error%
  7. pause
复制代码
我在 win7主机 和 win7虚拟机 测试没问题
你是啥系统?
发表于 2024-3-1 13:41:48 | 显示全部楼层
回复 6# SeanJuicer


比较一下正常的电脑和不正常的电脑,它们的 net use 命令返回值的格式是否有差异。
如果自己看不出来,请把它们写入文本文件上传到网盘。
发表于 2024-3-1 15:33:54 | 显示全部楼层
回复 1# SeanJuicer


    连之前先做删除操作 net use ip /del
 楼主| 发表于 2024-3-1 16:05:13 | 显示全部楼层
本帖最后由 SeanJuicer 于 2024-3-1 16:22 编辑

回复 7# czjt1234

运行此命令
  1. @echo off
  2. set H_error=
  3. for /f "tokens=2 delims=。 " %%i in ('net use H: \\192.168.0.7\111 "/user:admin" "Aa123456" /persistent:no 2^>^&1 ^| findstr [0123456789]') do (
  4.     set H_error=%%i
  5. )
  6. echo,%H_error%
  7. pause
复制代码
环境:
Windows 11 专业工作站版 22631.3155
全部都是自行封装的WIN11系统纯净镜像,运行没问题的是同一个虚拟机母盘早些月份封装

FOR循环挂载无错机器:
最后安装的补丁:2024-适用于 Windows 11 Version 23H2 的 02 累积更新,适合基于 x64 的系统 (KB5034765)
待更新的补丁:2024-适用于 Windows 11 Version 23H2 的 02 累积更新,适合基于 x64 的系统 (KB5034848)
FOR循环有问题的机器:
已安装全部最新补丁

打印结果
  1. 发生系统错误 1219。

  2. 不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次。
复制代码
有问题的机器去掉这段代码
  1. 2^>^&1 ^| findstr [0123456789]
复制代码
就可以挂载成功。

如果按照原始代码执行,哪怕我故意填入错误的账号和密码,出错信息都是1219,而去掉上面那段代码,打印的错误会如实出现,比如86,密码错误。

有问题的镜像重做系统3次,问题都存在,而其它不论是win10,还是我早些时候封装的win11,都无此问题,可以顺利挂载顺利读出错误代码

我所做的测试全部都会在前面执行net use * /del /y,因为不执行清除,挂载是成功的。
.
.
.
.
 楼主| 发表于 2024-3-1 16:09:25 | 显示全部楼层
我准备更新这台没问题的win11那个补丁,看下问题是否会复现,真是奇了怪了。
发表于 2024-3-1 16:13:55 | 显示全部楼层
自从纳德拉担任CEO解除了测试部门后,每次微软出补丁都会让全世界的技术维护员心惊胆战

记得有次补丁造成文件可以共享,但打印机不能共享。。。那个电话啊那个痛苦啊
 楼主| 发表于 2024-3-1 16:26:15 | 显示全部楼层
更新补丁到最新,没有复现问题!
发表于 2024-3-1 16:37:15 | 显示全部楼层
会不会账户限制,同一账户只允许一个远程连接之类
 楼主| 发表于 2024-3-1 16:41:22 | 显示全部楼层
回复 14# czjt1234


    不会,那台服务器是群晖,同一个账号已经在其它电脑重复登陆过了,是不限制SMB同时登陆的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:13 , Processed in 0.024170 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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