Команда выключения: процесс не может получить доступ к файлу, потому что он используется другим процессом - PullRequest
0 голосов
/ 28 марта 2019

Я пытаюсь написать командный файл, который при запуске отключит мой компьютер, если нет интернета. Я использую windows 10. Содержимое командного файла

@echo off

set "host=192.168.1.1"

ping -n 1 "%host%" | findstr /r /c:"[0-9] *ms"

if %errorlevel% == 0 (

    echo Success.

) else (

    shutdown -s -t 60 2> D:/Projects/log.txt

) 

Однако, когда запускается команда «shutdown -s -t 60» (или любой вариант завершения работы), она печатает ошибку (перенаправленную в файл ошибки), которая указывает Msgstr "Процесс не может получить доступ к файлу, потому что он используется другим процессом." Он прекрасно работает, когда я запускаю его вручную из cmd.

1 Ответ

0 голосов
/ 03 апреля 2019

Если вы хотите проверить, работает ли ваше интернет-соединение, протестируйте что-нибудь в интернете, а не маршрутизатор.Обратная косая черта в окнах в D: \ Projects \ log.txt.Сообщение об ошибке: «Процесс не может получить доступ к файлу, потому что он используется другим процессом».происходит, потому что вы пытаетесь что-то сделать с D: \ Projects \ log.txt.Пакет должен завершиться, прежде чем пытаться что-то сделать с log.txt.D: \ Проекты должны существовать.

    @echo off
    set host=8.8.8.8
    ping -n 1 "%host%" | findstr "TTL"
    if %errorlevel% == 0 (
        echo Success.
    ) else (
        md D:\Projects\
        shutdown -s -t 60 > D:\Projects\log.txt
    )
    exit /b 
...