Batch file 检查文件是否存在,如果不运行命令(PowerShell/Batch)

Batch file 检查文件是否存在,如果不运行命令(PowerShell/Batch),batch-file,if-statement,for-loop,Batch File,If Statement,For Loop,我希望有一个批处理(或PowerShell)文件,该文件通过一个电影文件的所有子文件夹,并在该电影文件上运行Handbrake(应用程序),然后向该文件夹输出一个文本文件,以确认该文件夹已被处理。这对于v1来说很好,但是对于v2,我需要检查那个文件是否存在……这就是我被卡住的地方 命令的当前值为 for /R .\ %%a in (*.avi,*.divx,*.m4v,*.mkv,*.mp4) do "%ProgramFiles%\Handbrake\HandBrakeCLI" --preset

我希望有一个批处理(或PowerShell)文件,该文件通过一个电影文件的所有子文件夹,并在该电影文件上运行Handbrake(应用程序),然后向该文件夹输出一个文本文件,以确认该文件夹已被处理。这对于v1来说很好,但是对于v2,我需要检查那个文件是否存在……这就是我被卡住的地方

命令的当前值为

for /R .\ %%a in (*.avi,*.divx,*.m4v,*.mkv,*.mp4) do "%ProgramFiles%\Handbrake\HandBrakeCLI" --preset="iPod" --optimize --turbo --input="%%a" --output="E:\MobileMovies\%%~na.mp4"

提前感谢并希望这是有意义的…

如果[不]存在,您需要使用
,例如:

if not exist myfile.txt for /R .\ %%a in (*.avi,*.divx,*.m4v,*.mkv,*.mp4) do "%ProgramFiles%\Handbrake\HandBrakeCLI" --preset="iPod" --optimize --turbo --input="%%a" --output="E:\MobileMovies\%%~na.mp4"

对于集合中的每个文件,如果不存在一个标志文件
name.extension.processed
文件,则在同一目录中重新编码并生成标志文件

谢谢,是的,这就是我所想的,但无论我如何拥有“如果不存在”,它都不起作用。检查你的上面,这似乎也不起作用
for /R .\ %%a in (*.avi,*.divx,*.m4v,*.mkv,*.mp4
) do if not exist "%%~fa.processed" (
    "%ProgramFiles%\Handbrake\HandBrakeCLI" --preset="iPod" --optimize --turbo --input="%%a" --output="E:\MobileMovies\%%~na.mp4"
    break > "%%~fa.processed"
)