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?
Batch For /f loop passing variables.
Moderator: DosItHelp
Re: Batch For /f loop passing variables.
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
-
- Posts: 2
- Joined: 03 Jul 2013 09:44
Re: Batch For /f loop passing variables.
That worked like a charm! Thanks