Windows 要调用的批处理文件 PHP 脚本

Windows Batch File to call PHP Script

谁能解释一下这个批处理文件试图做什么

setlocal
SET tmpfile="temp3.txt"

for %%f in (FY2?_20??.JPG) do (
    curl --form image=@%%f http://www.test.com/images/image_upload.php>%tmpfile%

    REN "%%f" "DONE-%%f"
    REN %tmpfile% "%%f.log"
 )

感谢您的帮助和建议

它所做的只是将一堆与特定文件名掩码匹配的图像上传到远程服务器,并将 curl 输出存储在日志文件中,然后在处理完这些图像后重命名它们。

但由于该答案简短而乏味,我将逐行查看脚本。


setlocal

对脚本中设置的变量进行沙盒处理,以便在脚本结束后无法访问它们。不是必需的,但是很好的做法。

SET tmpfile="temp3.txt"

将名为 tmpfile 的变量设置为值 temp3.txt

for %%f in (FY2?_20??.JPG) do (

遍历当前目录中以 FY2 开头的每个 JPG 文件的列表,然后是某个字符,然后是 _20,然后是另外两个字符。

    curl --form image=@%%f http://www.test.com/images/image_upload.php>%tmpfile%

通过该站点的 image_upload.php 页面将每个图像上传到 www.test.com。 curl 命令的输出被重定向到其位置先前存储在 %tmpfile% 变量中的文件。 > 表示覆盖文件内容或创建一个新文件(如果文件不存在)。 --form 选项使 curl 通过 POST 而不是 GET 发送图像。

    REN "%%f" "DONE-%%f"

在当前文件名

前附加字符串"DONE-"
    REN %tmpfile% "%%f.log"

更改日志文件的名称以匹配刚刚上传的文件的名称。这一行告诉我 %tmpfile% 变量是多余的,curl 输出可以简单地重定向到 %%f.log 而不需要临时文件。

 )

这只是关闭 for 循环。