![Windows 批处理:读取引发错误级别的行](https://linux22.com/image/1472046/Windows%20%E6%89%B9%E5%A4%84%E7%90%86%EF%BC%9A%E8%AF%BB%E5%8F%96%E5%BC%95%E5%8F%91%E9%94%99%E8%AF%AF%E7%BA%A7%E5%88%AB%E7%9A%84%E8%A1%8C.png)
有没有办法在批处理文件执行之后从其中读取引发错误级别的代码行?(恐怕没有)。
例如,该命令net use H: \\MyComputer\sharename02
将导致
System error 85 has occurred. The local device name is already in use.
在这种情况下驱动器 H:不可用,并且错误级别不再为 0。我的目标是获取该命令来修改它,类似于这样:
@echo off
set _counter=0
net use F: \\MyComputer\sharename01 /persistent:No
IF %ERRORLEVEL% NEQ 0 goto manip
_counter=_counter+1
:next2
net use H: \\MyComputer\sharename02 /persistent:No
IF %ERRORLEVEL% NEQ 0 goto manip
_counter=_counter+1
:next3
net use I: \\MyComputer\sharename03 /persistent:No
IF %ERRORLEVEL% NEQ 0 goto manip
_counter=_counter+1
IF %ERRORLEVEL% EQU 0 goto end
:manip
(do something with...
_variable="\\MyComputer\sharenameXY"
...)
_counter=_counter+1
if _counter==3 (goto end)
else (goto next%_counter%)
:end
该部分将与存储在中的:manip
命令一起工作。net use H: \\MyComputer\sharename02
_variable
我知道这种问题不太适合批处理,使用 VBscript 而不是批处理可能更容易解决。
希望有一个解决方案,否则我需要将我已经拥有的所有内容重写为 VBscript 或 Powershell。
答案1
没有。不过,你可以使用各种循环:
call :map_share Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
echo I got %letter%!
goto :eof
:map_share
if "%~1"=="" goto :eof
net use %1: \\MyComputer\sharename02 /persistent:No || (
shift
goto :map_share
)
set letter=%1
goto :eof