Изменить назначенный путь к диску через командную строку / командный файл - PullRequest
0 голосов
/ 04 февраля 2020

Как изменить путь подключенного диска через командный файл?

Я написал командный файл для удаления файлов в различных местах, которые старше 2 недель.

net use Y: \\servername1\c$

cd /d Y:\Reports
SET _CmdResult=NONE
FOR /F "tokens=*" %%a IN ('forfiles -p "Y:\Reports" -s -m *.* -d -14 -c "cmd /c del @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." ( 
    SET errorlevel=0 
) ELSE ( 
    SET errorlevel=1
)
IF "%_CmdResult%" == "NONE" SET errorlevel=0

net use Y: /delete /y

timeout 10

net use Y: \\servername2\c$

cd /d Y:\Reports
SET _CmdResult=NONE
FOR /F "tokens=*" %%a IN ('forfiles -p "Y:\Reports" -s -m *.* -d -14 -c "cmd /c del @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." ( 
    SET errorlevel=0 
) ELSE ( 
    SET errorlevel=1
)
IF "%_CmdResult%" == "NONE" SET errorlevel=0

net use Y: /delete /y

У меня проблема в том, что после первого экземпляра net use Y: /delete /y консоль закрывается. Без /y консоль просто ожидает подтверждения, поэтому никогда не движется.

Я попытался удалить первый экземпляр net use Y: /delete /y из сценария, надеясь, что следующая команда net use Y: \\servername2\c$ /y просто переназначит ее, но она ошибки, которые уже используются.

Я знаю, что мог бы подключить различные диски в начале сценария для указанных серверов c, но если я хочу использовать сценарий для удаления файлов с нескольких серверов, которые могут получить Грязно, если буква диска уже используется в какой-то момент в будущем, это также кажется очень неэффективным (больше, чем мой сценарий, вероятно, уже есть)

Я также мог бы иметь несколько сценариев для каждого расположения сервера, но опять-таки думаю, что это будет быть аккуратно обработанным в 1 скрипте.

Так есть ли способ изменения пути подключенного диска?

1 Ответ

0 голосов
/ 05 февраля 2020

Это то, что у меня сейчас. Похоже, работает. Я также рассмотрю однострочное решение.

Я не мог оставить комментарий, так как было слишком много текста ...

pushd \\servername1\c$

cd /d Reports
SET _CmdResult=NONE
FOR /F "tokens=*" %%a IN ('forfiles -p "%cd%" -s -m *.* -d -14 -c "cmd /c del @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." ( 
    SET con1=0 
) ELSE ( 
    SET con1=1
)
IF "%_CmdResult%" == "NONE" SET con1=0

timeout 15

popd

timeout 15

pushd \\servername2\c$

cd /d Reports
SET _CmdResult=NONE
FOR /F "tokens=*" %%a IN ('forfiles -p "%cd%" -s -m *.* -d -14 -c "cmd /c del @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." ( 
    SET con1=0 
) ELSE ( 
    SET con1=1
)
IF "%_CmdResult%" == "NONE" SET con1=0

timeout 15

popd

Спасибо за все предложения и помощь выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...