Изолировать заявление IF? - PullRequest
0 голосов
/ 29 марта 2020

Я хотел бы убедиться, что "||" Блок операторов не применим для этого оператора if:

if exist "%BackupDest%\%%~nI\%Desktop%\filename*.doc" (
ren "%BackupDest%\%%~nI\%Desktop%\filename*.doc" "newname*.doc"
)

Есть ли способ изолировать его от остальной части кода, не вмешиваясь в "||" блок операторов и без необходимости добавлять 2 "||" блок операторов?

Я пытался добавить оператор if сразу после:

) || (
echo       Access refused ^(check permissions^)
)

Но он выполняет "||" блок операторов, если возникает какая-либо ошибка. То же самое, если я удалю оператор IF и оставлю только команду REN.

Вот весь код:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

set BackupDest=D:\backup

for /f "tokens=*" %%I in ('dir /a:d-h /b "%HomeDrive%\users\*" ^| findstr /x /i /l /v /g:"%~dp0exclude_users.txt"') do if exist "%BackupDest%\%%I\" (

    echo -----------------------------------------
    echo      Processing user : %%I
    echo -----------------------------------------
    echo

    :: checking write permissions
    copy /y nul "%BackupDest%\%%I\.writable" >nul 2>&1 &&
    (
        del "%BackupDest%\%%I\.writable"

        xcopy "%%I\Desktop" "%BackupDest%\%%I\Desktop\" /e /i /y
        xcopy "%%I\Documents" "%BackupDest%\%%I\Documents\" /e /i /y

        :: renaming some files
        if exist "%BackupDest%\%%~nI\%Desktop%\filename*.doc" (
            ren "%BackupDest%\%%~nI\%Desktop%\filename*.doc" "newname*.doc"
        )

    ) || (
        echo       Access refused ^(check permissions^)
    )
)

pause
exit

Любая помощь будет очень полезна.

Спасибо .

...