使用批处理脚本检查并制作jpg文件列表(如果存在)到文本文件中

时间:2016-05-07 12:38:40

标签: batch-file command-prompt

我有一个项目,其中包含以下步骤:

  1. 创建文件夹中的jpg文件列表(最初没有)。

  2. 如果创建的文本文件为空,请转到步骤1.

  3. 如果步骤1中创建的列表文件不为空,则启动另一个程序(此程序需要收到的jpg文件作为输入)。

  4. JPG文件将由另一个进程发送到此文件夹。

    我是新手使用批处理脚本并从输入中使用以下代码。 但是,即使收到JPG文件,该程序也没有按照步骤3的要求启动另一个进程。

    我的代码出了什么问题?

    @echo off
    
    set "dir=E:\test"
    set "file=%dir%\a.txt"
    
    :start
    
    dir/b *.jpg>a.txt
    
    if "%~z1" == "" (
        goto start
    )
    if "%~z1" == "0" (
        goto start
    )
    if "%~z1" == "1" (
        Start "" "C:\Users\vamsidhar muthireddy\Documents\Visual Studio 2010\Projects\database_test0\Debug\database_test0.exe"
    )
    

1 个答案:

答案 0 :(得分:2)

  1. 不要像内部命令那样命名变量。虽然还有命令 DIR ,但可以命名变量dir,但这是不可取的。

  2. 不要像内部命令那样命名标签。虽然还有命令 START ,但可以命名标签start,但这是不可取的。

  3. 为什么不建议将变量或标签命名为命令?

    好吧,例如,如果将来某人想要找到使用变量dir的位置,批处理文件还包含命令 DIR ,或想要重命名标签start运行替换和批处理文件还包含命令 START ,这些操作变得困难,因为必须分析在每个找到的事件中使用的dirstart上下文。

    批处理文件代码的语法突出显然不正确,命令 DIR START 作为变量dir,标签start会最有可能也被强调为命令。

    主要的编码错误是%~z1,因为如果批处理文件的调用完全是一个文件名是一个批处理文件,那么它将被文件名的文件大小替换为调用批处理文件的第一个参数。现有文件。但这不是这种情况。这里的意图是获取列表文件的大小。 if "%~z1" == "1"也几乎不会成真。如果指定为参数的文件的文件大小恰好为1个字节,则此条件才会成立。

    这是一个注释的批处理代码,我认为这对该任务更有用:

    @echo off
    set "SourceDirectory=E:\test"
    
    rem This loop is executed with a delay of 5 seconds between each loop run
    rem until at least 1 file with extension JPG is found in the defined source
    rem directory. Then the JPG file is processed and batch processing ends.
    
    :Loop
    echo Checking for a *.jpg file in %SourceDirectory% ...
    if exist "%SourceDirectory%\*.jpg" goto ProcessFile
    %SystemRoot%\System32\ping.exe 127.0.0.1 -n 6 >nul
    goto Loop
    
    :ProcessFile
    for %%I in ("%SourceDirectory%\*.jpg") do (
        echo Processing %%I ...
        start "" "%USERPROFILE%\Documents\Visual Studio 2010\Projects\database_test0\Debug\database_test0.exe" "%%I"
    )
    
    rem Delete the created variable before exiting batch processing.
    set "SourceDirectory="
    

    要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

    • echo /?
    • for /?
    • goto /?
    • if /?
    • ping /?
    • rem /?
    • set /?
    • start /?