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

时间:2014-03-17 09:43:42

标签: batch-file if-statement for-loop

我希望有一个Batch(或PowerShell)文件,该文件遍历所有带有电影文件的子文件夹,并在该电影文件上运行Handbrake(应用程序),然后将文本文件输出到该文件夹​​作为确认方式该文件夹已被处理。这对于v1来说很好,但是对于v2我需要检查一下该文件是否存在......这就是我被困住的地方。

当前的FOR命令是;

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

提前致谢并希望有道理......

2 个答案:

答案 0 :(得分:0)

您需要使用if [not] exist,例如:

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"

答案 1 :(得分:0)

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"
)

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