Есть ли способ прочитать строку кода, которая подняла уровень ошибки из пакетного файла после его выполнения? (Боюсь, что нет).

Например, команда 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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .