【问题标题】:Shutdown command : The process can't access the file, because it is being used by another process关闭命令:该进程无法访问该文件,因为它正在被另一个进程使用
【发布时间】:2019-03-28 12:51:34
【问题描述】:

我正在尝试编写一个批处理文件,该文件在运行时会在没有可用互联网的情况下关闭我的计算机。我使用的是 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”命令运行(或任何关闭变体)时,它会打印一个错误(重定向到错误文件),指定 “该进程无法访问该文件,因为它正在被另一个进程使用。”。当我从 cmd 手动运行它时它工作得很好。

【问题讨论】:

  • 开始,与您的问题无关。这将是一个更好的 findstr 查询ping -n 1 "%host%" | findstr "TTL"。但是对于if 声明,我宁愿这样做。 if "%errorlevel%" == "0" echo success || shutdown -s -t 60 2> "D:\Projects\log.txt"

标签: batch-file cmd shutdown


【解决方案1】:

如果您想测试您的互联网连接是否正常,请测试互联网上的某些东西,而不是您的路由器。 D:\Projects\log.txt 中的窗口中的反斜杠。错误消息:“该进程无法访问该文件,因为它正被另一个进程使用。”正在发生是因为您正试图对 D:\Projects\log.txt 执行某些操作。在您尝试使用 log.txt 执行某些操作之前,该批处理必须完成。 D:\Projects 必须存在。

    @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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    相关资源
    最近更新 更多