Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用Inkscape从批处理文件将Svg转换为png多个文件_Batch File_Inkscape - Fatal编程技术网

Batch file 使用Inkscape从批处理文件将Svg转换为png多个文件

Batch file 使用Inkscape从批处理文件将Svg转换为png多个文件,batch-file,inkscape,Batch File,Inkscape,我有一个包含许多svg文件的文件夹,我想使用带有批处理脚本的inkscape(Windows 10*.bat文件)将它们转换为png文件。 下面的脚本可以正确地用于单个文件,但是,如何对目录中的数百个文件迭代相同的命令 PATH = "C:\Program Files\Inkscape" inkscape myfile.svg --export-png=myfile.png @echo关闭 对于“%~dp0*.svg”中的%%i,请执行以下操作( echo%%i至%%~ni.png “C:\

我有一个包含许多svg文件的文件夹,我想使用带有批处理脚本的inkscape(Windows 10
*.bat
文件)将它们转换为png文件。 下面的脚本可以正确地用于单个文件,但是,如何对目录中的数百个文件迭代相同的命令

PATH = "C:\Program Files\Inkscape"

inkscape myfile.svg --export-png=myfile.png
@echo关闭
对于“%~dp0*.svg”中的%%i,请执行以下操作(
echo%%i至%%~ni.png
“C:\Program Files\Inkscape\bin\Inkscape.com”--export type=“png”“%%i”
)
要通过利用所有逻辑核心来加快速度,您可以使用以下多任务方法:

@echo关闭
setlocal enableDelayedExpansion
::定义将运行以获取要处理的文件列表的命令
设置listCmd=dir/b/a-d“%~dp0*.svg”
::定义要为每个文件运行的命令,其中“%%F”是列表中的迭代文件名
::类似于您的_命令-in“%%F”-out“%%~nF.ext”
设置runCmd=“”C:\Program Files\Inkscape\bin\Inkscape.com”--export type=“png”“%%F”
::定义要运行的最大并行进程数。
设置“maxProc=%numberofpu处理器%”
::---------------------------------------------------------------------------------
::代码的其余部分应保持不变
::
::获取此特定实例化的唯一基锁名称。
::如果可能,从WMIC合并时间戳,但如果
::WMIC不可用。也包括一个随机数。
设置“锁=”
对于/f“skip=1 delims=-+”%%T in('2^>nul wmic os get localdatetime')执行(
设置“锁=%%T”
后藤:休息
)
:休息
设置“lock=%temp%\lock%lock%\u%random%\u
::初始化计数器
设置/a“开始计数=0,结束计数=0”
::清除任何现有的结束标志
对于(11%maxProc%)中的/l%%N,请设置“endProc%%N=”
::在循环中启动命令
将启动设置为1
对于/f“tokens=*delims=:”%%f in(“%listCmd%”)do(
if!startCount!lss%maxProc%(
设置/a“startCount+=1,nextProc=startCount”
)否则(
电话:等等
)
设置cmd!nextProc!=%runCmd%
回音-------------------------------------------------------------------------------
echo!time!-proc!nextProc!:正在启动%runCmd%
2> nul del%lock%!下一步!
%=将锁句柄重定向到锁文件。CMD进程将=%
%=在锁定文件上保持独占锁定,直到进程结束。=%
开始/b“cmd/c>%lock%!nextProc!”2^>^&1%runCmd%
)
设置“启动=”
:等等
::在循环中等待进程完成
::如果仍在启动,则在进程结束后立即返回
::否则等待所有进程完成
::将stderr重定向为null,以在重定向时抑制任何错误消息
::在循环中失败。
对于/l%%N in(1 1%startCount%)do 2>num(
%=将未使用的文件句柄重定向到锁定文件。如果进程为=%
%=仍在运行,则重定向将失败,并且IF正文将不运行=%
如果未定义endProc%%N如果存在“%lock%%%N”9>>%lock%%%N(
%=在IF主体内创建,因此进程必须已完成=%
回音===============================================================================
回声!时间!-程序%%N:完成!命令%%N!
类型“%lock%%%N”
如果定义了启动(
设置nextProc=%%N
退出/b
)
设置/a“endCount+=1,endProc%%N=1”
)
)
如果%endCount%lss%startCount%(
超时/T1/nobreak>nul
后藤:等等
)
2> 数字删除%lock%*
回音===============================================================================
@echo off
对于“%~dp0*.svg”中的%%i,请执行以下操作(
echo%%i至%%~ni.png
“C:\Program Files\Inkscape\bin\Inkscape.com”--export type=“png”“%%i”
)
要通过利用所有逻辑核心来加快速度,您可以使用以下多任务方法:

@echo关闭
setlocal enableDelayedExpansion
::定义将运行以获取要处理的文件列表的命令
设置listCmd=dir/b/a-d“%~dp0*.svg”
::定义要为每个文件运行的命令,其中“%%F”是列表中的迭代文件名
::类似于您的_命令-in“%%F”-out“%%~nF.ext”
设置runCmd=“”C:\Program Files\Inkscape\bin\Inkscape.com”--export type=“png”“%%F”
::定义要运行的最大并行进程数。
设置“maxProc=%numberofpu处理器%”
::---------------------------------------------------------------------------------
::代码的其余部分应保持不变
::
::获取此特定实例化的唯一基锁名称。
::如果可能,从WMIC合并时间戳,但如果
::WMIC不可用。也包括一个随机数。
设置“锁=”
对于/f“skip=1 delims=-+”%%T in('2^>nul wmic os get localdatetime')执行(
设置“锁=%%T”
后藤:休息
)
:休息
设置“lock=%temp%\lock%lock%\u%random%\u
::初始化计数器
设置/a“开始计数=0,结束计数=0”
::清除任何现有的结束标志
对于(11%maxProc%)中的/l%%N,请设置“endProc%%N=”
::在循环中启动命令
将启动设置为1
对于/f“tokens=*delims=:”%%f in(“%listCmd%”)do(
if!startCount!lss%maxProc%(
设置/a“startCount+=1,nextProc=startCount”
)否则(
电话:等等
)
设置cmd!nextProc!=%runCmd%
回音-------------------------------------------------------------------------------
echo!time!-proc!nextProc!:正在启动%runCmd%
2> nul del%lock%!下一步!
%=将锁句柄重定向到锁文件。CMD进程将=%
%=在锁定文件上保持独占锁定,直到进程结束。=%
开始/b“cmd/c>%lock%!nextProc!”2^>^&1%runCmd%
)
设置“启动=”
:等等
::在循环中等待进程完成
::如果仍在启动,则在进程结束后立即返回
::否则等待所有进程完成
::将stderr重定向为null,以在重定向时抑制任何错误消息
::在循环中失败。
对于/l%%N in(1 1%startCount%)do 2>num(
%=将未使用的文件句柄重定向到锁定文件。如果进程为=%
%=仍然是r
#!/bin/bash
mkdir "$PWD"/pdf
for file in $PWD/*.svg
    do
        filename=$(basename "$file")
        inkscape "$file" --export-type=pdf --export-filename="$PWD"/pdf/"${filename%}.pdf"
    done
FOR %%A IN (*.svg) DO "<path to Inkscape bin>\inkscape.com" %%A --export-filename=%%A.png