我有一个可以将所有照片转储到同一网络上的辅助电脑上的照相机。
在帮助PC上,我计划每隔x分钟运行一次计划任务,使用ImageMagick对图像进行一些编辑(例如蒙太奇,标签等)。
这些文件是通过时间戳命名的,一次只需要4个,所以如果有几个人背靠背使用了光学平台,那么它会将以下文件传输给帮助者PC:
我最初使用批处理文件将* .jpg提供给ImageMagick,但现在我意识到如果两个人在<中使用了photobooth。 x分钟,然后将有两组图像(如上所述)。将8张图片而不是4张图片移交给ImageMagick会导致混乱。
我的问题是 - 如何识别名称相似的文件(例如,前16个字符是相同的)并将这些文件传递给ImageMagick?
答案 0 :(得分:0)
我没有时间对此进行编码,但您可以执行以下操作
set mydatetime=2016-01-29-22-07
)for /r %i in (%mydatetime%*) do move %i %targetpath%
PING 127.0.0.1 -n 1 -w 60000 >NUL
(假设您在上面的评论中仅表示每分钟一批)
但是,如果你有能力修改输出(通过添加“几秒钟的睡眠”表示),我想和其他人一样,为什么你不只是让输出更强大?单独的文件夹,批次名称等
答案 1 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\transferred.log"
IF NOT EXIST "%filename1%" ECHO xxx>>"%filename1%"
:again
SET "transfer="
FOR /f "tokens=1-6delims=-" %%a IN (
'dir /b /a-d /on "%sourcedir%\*.jpg"^|findstr /b /v /g:"%filename1%"'
) DO (
SET "transfer=%%a-%%b-%%c-%%d-%%e"
GOTO movefiles
)
ECHO no new files to MOVE
GOTO :EOF
:movefiles
>>"%filename1%" ECHO %transfer%
:: don't know what you want from here
ECHO transfer %transfer%* ??
SET "transfer=%transfer%-01.jpg %transfer%-02.jpg %transfer%-03.jpg %transfer%-04.jpg"
ECHO transfer %transfer% ??
:: perhaps a delay here for helper PC to process??
timeout /t 5 >nul
GOTO again
您需要更改sourcedir
和filename1
的设置以适合您的具体情况。
您还没有告诉我们您想要分组的文件会发生什么,所以我认为它们仍然存在。
问题的关键是for
- 使用-
作为分隔符获取前6个令牌并以基本形式应用于目录列表,而不按名称顺序对目录进行排序并对其进行过滤以filename1
如果找到任何此类行,请将名称收集到transfer
中,并使用该值(未指定)执行某些操作,在日志中记录该值,以便下一个循环包含其排除中找到的值 - 列表。