Este dilema se puede tratar de variadas formas, pero nosotros te mostramos la que en nuestra opinión es la resolución más completa.
Solución:
Aquí hay una línea de PowerShell que puede ejecutar desde una consola cmd que codificará en Base64 un string.
powershell "[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("Hello world!"))"
Probablemente no sea tan rápido como la solución de npocmaka, pero podría configurar una consola macro con eso.
doskey btoa=powershell "[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("$*"))"
doskey atob=powershell "[Text.Encoding]::UTF8.GetString([convert]::FromBase64String("$*"))"
btoa Hello world!
btoa This is fun.
btoa wheeeeee!
atob SGVsbG8gd29ybGQh
Ten en cuenta que doskey
no funciona en scripts por lotes, solo en la consola. Si desea usar esto en un script por lotes, cree una función.
@echo off
setlocal
call :btoa b64[0] "Hello world!"
call :btoa b64[1] "This is fun."
call :btoa b64[2] "wheeeeee!"
call :atob b64[3] SGVsbG8gd29ybGQh
set b64
goto :EOF
:btoa
for /f "delims=" %%I in (
'powershell "[convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("%~2"))"'
) do set "%~1=%%I"
goto :EOF
:atob
for /f "delims=" %%I in (
'powershell "[Text.Encoding]::UTF8.GetString([convert]::FromBase64String("%~2"))"'
) do set "%~1=%%I"
goto :EOF
O si prefiere un híbrido por lotes + JScript:
@if (@[email protected]) @then
@echo off & setlocal
call :btoa b64[0] "Hello world!"
call :btoa b64[1] "This is fun."
call :btoa b64[2] "wheeeeee!"
call :atob b64[3] SGVsbG8gd29ybGQh
set b64
goto :EOF
:btoa
:atob
for /f "delims=" %%I in ('cscript /nologo /e:JScript "%~f0" %0 "%~2"') do set "%~1=%%I"
goto :EOF
@end // end batch / begin JScript hybrid code
var htmlfile = WSH.CreateObject('htmlfile');
htmlfile.write('');
WSH.Echo(htmlfile.parentWindow[WSH.Arguments(0).substr(1)](WSH.Arguments(1)));
Editar: híbrido por lotes + VBScript para @Hackoo:
De acuerdo con los comentarios sobre la pregunta, puede usar certutil. p.ej,
certutil -encode raw.txt encoded.txt
o
certutil -f -encode raw.txt encoded.txt
los -f
significa “forzar sobrescritura”. De lo contrario, obtendrá un error si el archivo de salida (encoded.txt anterior) ya existe.
Sin embargo, esto formateará la salida en el archivo codificado.txt como si fuera un archivo PEM de certificado, completo con líneas BEGIN y END, y líneas divididas en el máximo de caracteres. Por lo tanto, necesitaría realizar un procesamiento adicional en un escenario por lotes y un poco de trabajo adicional si las cadenas son largas.
este guion puede decodificar/codificar cadenas base64 en cada máquina desde XP y superior sin necesidad de instalar .net o Internet Explorer 10/11. Incluso puede manejar símbolos especiales con escape de JavaScript:
// result is IkhlbGxvIg==
base64.bat -encode "u0022Hellou0022" -eval yes
// result is SGVsbG8=
base64.bat -encode "Hello"
Éste acepta un único argumento: el string desea codificar en base 64 e imprime el resultado (pero requiere al menos Internet Explorer 10 instalado):
@echo off
setlocal
set "string=%~1"
::echo %string%^|mshta.exe "%~f0"
for /f "delims=" %%# in ('echo %string%^|mshta.exe "%~f0"') do (
set b64=%%#
)
set b64
endlocal&exit /b %errorlevel%
Puntuaciones y comentarios
Puedes avalar nuestra investigación exponiendo un comentario o valorándolo te damos la bienvenida.