1

在 cygwin 下,我创建了 to_png.bat 并使用用于将我的 SVG 文件转换为 PNG 的 inkscape 命令行填充它。如果我自己在命令行上运行这些命令,它们将成功执行。如果我运行 to_png.bat 文件,我会收到以下错误:

** (inkscape.exe:3856): 警告 **: 无法打开指定的文档“svgs/ace.svg”(不存在或不是有效的 SVG 文件)

我当然是从同一个目录运行的,我还尝试指定绝对路径,以防在运行 .bat 文件时,inkscape 看到的工作目录有所不同。我只是使用 python 和 os.system 调用来做到这一点并且遇到了同样的问题。

编辑:从 dos 命令行运行也会出现同样的问题。在 PATH 上找到 inkscape,但 inkscape 找不到 .svg 文件。这是单引号的问题吗?我的文件名中有空格,因此引用。

to_png.bat:

inkscape -h 120 -e 'pngs/ace.png' 'svgs/ace.svg'
inkscape -h 120 -e 'pngs/king.png' 'svgs/king.svg'
inkscape -w 120 -e 'pngs/queen.png' 'svgs/queen.svg'
4

5 回答 5

2

您尝试做的事情从根本上说很奇怪。

由于您有 bash,您可以简单地创建一个 shell 脚本并运行您在 shell 提示符下键入的完全相同的命令。

相反,您正在尝试制作一个由 cmd.exe 使用其自己的 PATH 和环境运行的 .bat 文件。为什么?

如果您确实必须这样做,请首先运行cmd以打开 Windows 命令提示符,然后测试您的命令(和 PATH)变量,直到您可以正常工作。您肯定会更改 PATH 变量或命令行,或两者兼而有之。但是,如果您可以从 Windows 命令提示符运行它,那么您将能够将这些命令行复制到 .bat 文件中并运行它们。

于 2011-08-07T05:58:33.677 回答
1

DOS/Windows 中的目录分隔符是反斜杠。因此,使用斜线可能在 cygwin shell 下工作,但在 .bat 下不行。

于 2011-07-31T14:20:31.580 回答
0

我认为将带有正斜杠的路径传递给 Windows 命令并不总是有效。

于 2011-07-31T14:19:41.353 回答
0

用双勾替换单勾'解决了问题并允许文件名中的空格。

于 2011-07-31T14:40:38.820 回答
0

在 Windows 批处理脚本中,该'字符不被识别为用于分隔文件名的字符。而是"使用。此外,使用反斜杠而不是正斜杠作为路径分隔符可能会更好。

因此,您的脚本可能应该如下所示:

inkscape -h 120 -e "pngs\ace.png" "svgs\ace.svg"
inkscape -h 120 -e "pngs\king.png" "svgs\king.svg"
inkscape -w 120 -e "pngs\queen.png" "svgs\queen.svg"
于 2011-07-31T14:41:20.280 回答