2016-02-28 33 views
0

我有要使用批处理文件作为参数插入的文件。这些文件编号为'image-1.jpg''image-2.jpg''image-3.jpg'等。我想自动添加它们,但我不确定我做错了什么。这就是我要怎样做:如何使用for循环插入命令行参数?

montage -mode concatenate^ 
FOR /L %%A IN (1,1,8) DO (ECHO "folder 1"/image-%%A.jpg^)^ 
-tile 4x2^ 
-geometry +0+0^ 
montage.jpg 

显然,我做错了什么,因为CMD认为FOR是执行命令的一部分。有没有办法嵌入这样的FOR循环?

编辑:如果我是手工键入,命令应该是这样的:

montage -mode concatenate^ 
"folder 1"/image-1.jpg^ 
"folder 1"/image-2.jpg^ 
"folder 1"/image-3.jpg^ 
"folder 1"/image-4.jpg^ 
"folder 1"/image-5.jpg^ 
"folder 1"/image-6.jpg^ 
"folder 1"/image-7.jpg^ 
"folder 1"/image-8.jpg^ 
-tile 4x2^ 
-geometry +0+0^ 
montage.jpg 
+0

我相信如果您要描述实际应用而不是简化的人造花园,您会获得更多的里程。 – Magoo

回答

0

你靠近;您需要在使用montage命令之前构建字符串。另外,因为您正在更新for循环中的变量,所以需要延迟扩展。

@echo off 
setlocal enabledelayedexpansion 

for /l %%A in (1,1,8) do set files=!files! "folder 1"/image-%%A.jpg 
montage -mode concatenate !files! -tile 4x2 -geometry +0+0 montage.jpg 
+0

谢谢!这正是我需要的。它工作完美。 – copperhead4750

0
For /l %%A in (1,1,8) do montage -mode concatenate "folder 1"/image-%%A.jpg" -tile 4x2 -geometry +0+0 montage.jpg 
+0

这只是运行命令8次,每次覆盖montage.jpg。我需要每个文件名都在参数中,然后立即执行,因此它们被合并。 – copperhead4750

+0

那么你不能使用for循环。 – 2016-02-28 23:39:41

+0

你有解决方案吗? – copperhead4750