2016-02-28 131 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