1

Мне нужно запустить пакетный скрипт, который ожидает папки локально. Он запускает процесс Python, который использует os.listdir и т.д. Однако эта конкретная папка мне интересна только там, в сетевой папке. Так возможно ли мне получить доступ к сетевому ресурсу непосредственно перед его запуском, а затем закрыть позже?

Для служб у нас есть опция в службах Windows с надписью "Войти в систему", которую можно использовать для доступа к удаленному компьютеру и выполнения там каких-либо операций с файлами. Я думаю, что это называется Service Logon Accounts. Можно ли сделать то же самое для простого пакетного сценария, т.е. простого процесса?


Должен ли я использовать команду net use для этого? Я видел некоторые решения здесь, но net use сети, возможно, самый простой способ сделать это?

net use \\RemoteComputer\c$ password /user:DOMAIN\remoteUsername
program.bat
net use \\RemoteComputer\c$ /d

1 ответ1

1

Вы можете использовать некоторую условную логику IF и проверить, существует или нет UNC-путь к этому ресурсу. Если он не существует, вы поместите его в цикл, чтобы он продолжал возвращаться к процедуре, чтобы продолжать повторную проверку снова и снова, пока она не существует. Как только он находит путь UNC и проверяет его доступность, это означает, что этот ресурс доступен, остальная часть вашей пакетной логики может быть запущена, а затем вы можете выйти из процесса после запуска другой логики.


скрипт

@ECHO ON

:: -- Check network share and folder is accessible 
:NetworkAccessible
::ping -n 06 127.0.0.1>nil
IF NOT EXIST "\\<ServerName>\<ShareName>\Folder" GOTO :NetworkAccessible

<Rest of Logic>
<Rest of Logic>

EXIT

Примечание. Вы можете удалить два двоеточия в строке ::ping -n 06 127.0.0.1>nil и это даст 5-секундную задержку перед повторной проверкой, но число можно увеличить или уменьшить.


Дополнительные ресурсы

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