【问题标题】:Check if file exists, if not run FOR command (PowerShell / Batch)检查文件是否存在,如果不运行 FOR 命令(PowerShell / Batch)
【发布时间】:2014-03-17 09:43:42
【问题描述】:

我希望有一个批处理(或 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"

在此先感谢,希望这是有道理的......

【问题讨论】:

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


    【解决方案1】:
    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文件,则重新编码生成标志文件

    【讨论】:

      【解决方案2】:

      需要使用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"
      

      【讨论】:

      • 谢谢,是的,这就是我的想法,但无论我如何拥有如果不存在,它都无法正常工作。检查了您的上述内容,但似乎也不起作用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      相关资源
      最近更新 更多