Batch For /f loop passing variables.

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
chadkfranks
Posts: 2
Joined: 03 Jul 2013 09:44

Batch For /f loop passing variables.

#1 Post by chadkfranks » 03 Jul 2013 09:53

I created a batch file that I can't get the for /f loop to pass the variable to the rest of the script. Here is the script:

@echo Off

FOR /f "Tokens=*" %%a in (certs.txt) do echo %%a

echo Certificate Name = %1

C:\openssl\bin\openssl pkcs12 -passin pass:cert4wintel -in "c:\ssl\%1.pfx" -nocerts -nodes -out "c:\ssl\keys\%1_key.pem"

c:\openssl\bin\openssl pkcs12 -passin pass:cert4wintel -in "c:\ssl\%1.pfx" -nokeys -out "c:\ssl\certs\%1_cert.pem"

type c:\ssl\roots.txt >> c:\ssl\certs\%1_cert.pem

if not exist "c:\Program Files (x86)\WinZip\wzzip.exe" GOTO 7zip
IF Exist GOTO winzip

if not exist "c:\Program Files (x86)\7-zip\7z.exe" GOTO winzip
IF Exist GOTO 7zip

:winzip
"c:\Program Files (x86)\winzip\wzzip.exe" -rp %1.zip c:\ssl\keys\%1_key.pem
"c:\Program Files (x86)\winzip\wzzip.exe" -rp %1.zip c:\ssl\certs\%1_cert.pem
"c:\Program Files (x86)\winzip\wzzip.exe" -rp %1.zip c:\ssl\%1.pfx


:7zip
"c:\Program Files (x86)\7-zip\7z.exe" a C:\NewCSScerts\%1.7z c:\ssl\keys\%1_key.pem
"c:\Program Files (x86)\7-zip\7z.exe" a C:\NewCSScerts\%1.7z c:\ssl\certs\%1_cert.pem
"c:\Program Files (x86)\7-zip\7z.exe" a C:\NewCSScerts\%1.7z c:\ssl\%1.pfx



Move c:\ssl\certs\%1_cert.pem c:\ssl\certs\archive

Move c:\ssl\keys\%1_key.pem c:\ssl\keys\archive

Move c:\ssl\%1.pfx c:\ssl\certs\archive


What am I doing wrong?

foxidrive
Expert
Posts: 6031
Joined: 10 Feb 2012 02:20

Re: Batch For /f loop passing variables.

#2 Post by foxidrive » 03 Jul 2013 10:04

On a quick glance you appear to have coded it for an external loop - try this:


Code: Select all

@echo Off

FOR /f "delims=" %%a in (certs.txt) do call :subroutine  %%a
goto :EOF

:subroutine

echo Certificate Name = %1

C:\openssl\bin\openssl pkcs12 -passin pass:cert4wintel -in "c:\ssl\%1.pfx" -nocerts -nodes -out "c:\ssl\keys\%1_key.pem"

c:\openssl\bin\openssl pkcs12 -passin pass:cert4wintel -in "c:\ssl\%1.pfx" -nokeys -out "c:\ssl\certs\%1_cert.pem"

type c:\ssl\roots.txt >> c:\ssl\certs\%1_cert.pem

if exist "c:\Program Files (x86)\WinZip\wzzip.exe" GOTO :winzip
if exist "c:\Program Files (x86)\7-zip\7z.exe" GOTO :7zip
echo archiver not found
pause
goto :EOF


:winzip
"c:\Program Files (x86)\winzip\wzzip.exe" -rp %1.zip c:\ssl\keys\%1_key.pem
"c:\Program Files (x86)\winzip\wzzip.exe" -rp %1.zip c:\ssl\certs\%1_cert.pem
"c:\Program Files (x86)\winzip\wzzip.exe" -rp %1.zip c:\ssl\%1.pfx


:7zip
"c:\Program Files (x86)\7-zip\7z.exe" a C:\NewCSScerts\%1.7z c:\ssl\keys\%1_key.pem
"c:\Program Files (x86)\7-zip\7z.exe" a C:\NewCSScerts\%1.7z c:\ssl\certs\%1_cert.pem
"c:\Program Files (x86)\7-zip\7z.exe" a C:\NewCSScerts\%1.7z c:\ssl\%1.pfx



Move c:\ssl\certs\%1_cert.pem c:\ssl\certs\archive

Move c:\ssl\keys\%1_key.pem c:\ssl\keys\archive

Move c:\ssl\%1.pfx c:\ssl\certs\archive

chadkfranks
Posts: 2
Joined: 03 Jul 2013 09:44

Re: Batch For /f loop passing variables.

#3 Post by chadkfranks » 03 Jul 2013 10:15

That worked like a charm! Thanks

Post Reply