老刘 发表于 2017-11-12 14:01

批处理版Base64编码工具

本帖最后由 老刘 于 2017-11-12 14:06 编辑

某天楼主发现fc这个命令可以读取文件二进制数据,于是就突发灵感(并且批处理的位运算确实挺好用),写出了这个~
可能大家会吐槽,不是有certutil -encode嘛~

纯属娱乐,纯属娱乐,表在意这些~
只需要一个批处理,就可以轻松EncodeBase64(其实个人感觉比certutil的命令好用很多,可以直接encode字符串而不用塞到文本里面)~
欢迎大家反馈不足,不喜勿喷,谢谢~
还可以在批处理之家看:http://www.bathome.net/thread-43845-1-1.html

用法:
Batname <文件路径 或 字符串>
借助外部命令FC,Fsutil,Findstr
已知BUG:受批处理机制影响,当外参为字符串时,英文感叹号和英文双引号会被丢弃。
请将其写入文本文件并将文件路径传参
支持任何文件编码,无视特殊符号
自己简单写了一个高亮脚本,效果辣鸡,大家暂且将就着看看


————————————————
%老刘原创%
%如有雷同,纯属巧合%
%转载请注明作者昵称%

@ ECHO off & PUSHD %tmp%
SETlocal ENABLEDELAYEDEXPANSION
SET rand=!ranDOm!

IF not exist "%~1" (
      SET/P"=%~1"<nul >$_!rand!
      SET FilePATh=$_!rand!
) ELSE SET "FilePATh=%~1"

DEL /F $_!rand!_ 2>nul
FOR %%a IN ("!FilePath!") DO ^
Fsutil file creATenew $_!rand!_ %%~za >nul

SET Alphabet=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=

SET /A Counter=0
DEL /F $_!rand!_$ 2>nul
(FOR /F "Tokens=2" %%. IN (
      'Fc /b "!FilePath!" $_!rand!_ ^| Findstr /R /C:": 00"'
) DO (
      SET /A Counter+=1
      SET/P"=%%. "
      IF !Counter! EQU 3 (
                SET /A Counter=0
                ECHO.
      )
))<nul >$_!rand!_$
DEL /F $_!rand! $_!rand!_ 2>nul

SET Endstr=
(FOR /F "Tokens=1-3" %%A IN ($_!rand!_$) DO (
      IF "%%C" EQU "" (
                IF "%%B" EQU "" (
                        SET /A "Bse1=0x%%A>>2,Bse2=(0x%%A&0x3)<<4,Bse3=Bse4=64"
                ) ELSE SET /A "Bse1=0x%%A>>2,Bse2=((0x%%A&0x3)<<4)|(0x%%B>>4),Bse3=(0x%%B&0xf)<<2,Bse4=64"
      ) ELSE SET /A "Bse1=0x%%A>>2,Bse2=((0x%%A&0x3)<<4)|(0x%%B>>4),Bse3=((0x%%B&0xf)<<2)|(0x%%C>>6),Bse4=0x%%C&0x3f"
      FOR /L %%. IN (1 1 4) DO FOR %%' IN (!Bse%%.!) DO (
                IF "!Alphabet:~%%',1!" EQU "=" (
                        SET "Endstr=!Endstr!="
                ) ELSE SET/P"=!Alphabet:~%%',1!"
      )
))<nul
ECHO.%Endstr%
DEL /F $_!rand!_$ 2>nul

A羽飞 发表于 2017-11-12 14:08

谢谢分享。。。
页: [1]
查看完整版本: 批处理版Base64编码工具