"Delete files script"继续到下一台电脑,如果列表中的电脑已关闭问题



我有一个脚本来删除我的爱普生扫描文件夹中的所有文件。在我的plist .txt中,我在每行上列出了每个pc的名称。我正试图弄清楚如何调整这个脚本继续到以下pc,如果列表上的pc不在上。如果所有电脑都打开,脚本运行完美。但是,如果一台pc被关闭,它将停止运行,并且不会移动到列表中的下一台pc。有人知道我该怎么调整吗?

注意:pclist.txt只是一个列表的pc名称

@echo off
IF "%CD%" NEQ "%~dp0" PUSHD "%~dp0"
for /F %%G in (pclist.txt) do ( 
pushd "\%%GC$Epson Scans" || exit /B 1
for /D %%I in ("*") do (
    rd /S /Q "%%~I"
)
del /Q "*"
popd
)

有一个exit /B命令,因此在pushd失败时脚本终止也就不足为奇了。||构成了一个条件命令连接操作符,它只允许在前一个命令失败的情况下执行下一个命令(也就是说,它返回一个非零的退出代码)。

因此,我将删除|| exit /B 1部分并简单地反转逻辑,以便仅在pushd成功连接到驱动器的情况下完成删除。还有一个&&操作符,它允许在前一个命令成功的情况下执行以下命令,我将使用:

@echo off
for /F "usebackq delims=" %%G in ("%~dp0pclist.txt") do ( 
    pushd "\%%GC$Epson Scans" && (
        rem Perform the actual deletions in case of successful connection:
        for /D %%I in ("*") do (
            rd /S /Q "%%~I"
        )
        del /Q "*"
        popd
    ) || (
        rem Do something in case of failure, like printing an error message:
        >&2 echo Could not connect "%%G"!
    )
)

尝试使用ping命令(-n 1只尝试一次)并使用ERRORLEVEL变量

进行测试
ping -n 1 MYSERVER > nul
if NOT ERRORLEVEL 1 (
  echo "MYSERVER IS OK"
)

在你的脚本中:

@echo off
IF "%CD%" NEQ "%~dp0" PUSHD "%~dp0"
for /F %%G in (pclist.txt) do ( 
   ping -n 1 %%G > nul
   if NOT ERRORLEVEL 1 (
    pushd "\%%GC$Epson Scans" || exit /B 1
    for /D %%I in ("*") do (
        rd /S /Q "%%~I"
    )
    del /Q "*"
    popd
   )
)

相关内容

最新更新