IF命令在我的批处理文件中没有正确处理参数

时间:2016-06-25 04:56:45

标签: windows batch-file cmd

我试图创建一个与ImageMagick合作将SVG转换为PNG的批处理。我也试图让它做不同的操作,具体取决于传递给它的参数。

svg2png -all

上述命令应该告诉它转换文件夹中的每个SVG。

svg2png examplename.svg

此命令应该告诉它只转换单个SVG。

我的问题是我无法承认-all不是文件名,而是一个参数,所以它会检查一个名为-all的文件,当然这不是一个文件。存在。

有人可以帮忙吗?以下是我的代码:

@echo off
if "%1"=="" goto noparameters
if "%1"==-all goto convertall
if exist "%1" (
 goto convertsingle
) else (
 goto badfilename
)
goto noparameters

:convertall
echo.
for %%a in ("*.svg") do (
 echo Now converting %%a.
 magick convert -size 512x512 %%a %%a.png
)
goto endbatch

:convertsingle
echo.
echo Now converting %1.
magick convert -size 512x512 %1 %1.png
goto endbatch

:noparameters
echo.
echo No parameters specified.
goto endbatch

:badfilename
echo.
echo SVG2PNG could not find the specified file.
goto endbatch

:endbatch

1 个答案:

答案 0 :(得分:4)

报价是比较的一部分。如果你在比较的一边有它们,它们必须在另一边,以使它们相等。

 if "%1"=="-all" goto convertall