我想以此为前言;我不是编码器我很好奇是否可以获取批处理文件,我将使用OpenSSL生成自签名证书并将其链接到.CSV文件以生成具有不同文件名的多个证书。 (我的批处理文件也将.cer转换为.der,因为这是我需要的格式)。
即
R001.der
R002.der
R123.der
我的批处理文件会调用另一个只引用OpenSSL目录的批处理文件。
我的批处理文件:
setlocal enableextensions
@echo off
call vars.bat
echo #### Generating a new private key
openssl genrsa -out NewCertPrivKey.pem 2048
echo #### Converting private key to DER format
openssl rsa -in NewCertPrivKey.pem -inform PEM -out NewCertPrivKey.der -outform DER
echo #### Generating certificate request
openssl req -new -sha256 -key NewCertPrivKey.pem -out NewCertUnsigned.pem -days 3650
echo #### Signing the certificate request
openssl ca -verbose -days 3650 -out NewCertSigned.pem -keyfile demoCA\private\CAPrivKey.pem -cert demoCA\CACert.pem -infiles NewCertUnsigned.pem
echo #### Converting certificate to DER
openssl x509 -in NewCertSigned.pem -inform PEM -outform DER -out NewCertSigned.der
echo ##################################
echo The files to upload are NewCertSigned.der and NewCertPrivKey.der
由于您已经省略了清楚地告诉我们您的.csv
文件的内容,我将假设您的文件是您包含的R001.der..
脚本。
你能做的是(作为一批):
for /f %%a in (yourcsvfilename) do call yourbatchfileasposted.bat %%a
它将执行您的批处理文件,从.csv
文件的每一行提供第一个标记(空格分隔的字符串)内容的参数。
注意执行批处理意味着不会永久地重新键入命令,但如果您希望使事情变得困难并从提示中重新键入命令,则将每个%%a
减少到%a
。请注意,%a
的大小写区分大小写。
并使用NewCertPrivKey
,NewCertUnsigned
,NewCertSigned
(即在主文件名主体后插入NewCertPrivKey%1
)替换批次中使用的文件名中的每个NewCertUnsigned%1
,NewCertSigned%1
,%1
。
当您使用NewCertPrivKeyR001.der.pem
参数执行批处理时,这将创建像R001.der
这样的文件名(%1表示copy the first parameter verbatim
)
如果你想从NewCertPrivKeyR001.pem
参数获得R001.der
,那么使用%~n1
而不是%1
。这使用参数1的“名称”部分 - 即最终.
之前的部分
请注意,您修改的批处理文件仍将作为原始文件运行,因为如果在运行时未提供参数,则%1
为空,因此在复制时会生成空字符串。