今天我自己第一次写了一个Windows批处理bat脚本,备注一下
事情原由:自己使用Java开发了一个加解密的工具。但是当把工具给别人使用的时候,别人还需要把代码编译打包,
然后还需要看一下代码里面的制定文件类型和目录,把文件放在制定的位置然后才能使用。
所以,我是不是可以写一个自动化脚本来实现这些麻烦的步骤呢?所有就有了如下脚本。
这里记录一下, 是给自己有一个参考,里面的大量的语法和结构都是自己查了资料之后才摸索出来的。
很有参考意义。
`
@echo off
@rem #生活
@rem
@rem Java环境变量配置 和 字符编码集配置
@rem
@rem #生活
setlocal
chcp 936 2>nul >nul
set java_exe=java.exe
@rem #生活
@rem
@rem 自动识别jar的最新版本号
@rem
@rem #生活
rem Find the highest version .jar available in the same directory as the script
setlocal EnableDelayedExpansion
set BASENAME=RsaDec_
pushd "%~dp0"
if exist RsaDec.jar (
set BASENAME=RsaDec
goto skipversioned
)
set max=0
for /f "tokens=1* delims=-_.0" %%A in ('dir /b /a-d %BASENAME%*.jar') do if %%~B gtr !max! set max=%%~nB
:skipversioned
@REM @echo "%~dp0%BASENAME%%max%.jar" is running
popd
@rem #生活
@rem
@rem 参数配置
@rem 1. 不传任何参数,直接运行 (直接运行的前提是,获取到)
@rem 2. 保留参数能力,默认参数做到自动识别和匹配 (先对三个参数取默认值)
@REM 参数1:sourceFile : 默认当前目录的或者子目录的 .lic文件
@REM 参数2:targetFile : 默认应该为 对应.lic 文件的文件名
@REM 参数3:privateKeyFile :私钥默认为 privatekey.txt
@rem #生活
IF "%1" equ "/?" goto showhelp
IF "%1" equ "--help" goto showhelp
@rem 第一步:请输入获取到的.lic文件名称,如 authorized.lic,如果不和bat文件在同一目录,请输入全路径,如:D:\license\authorized.lic
@REM set sourceFile=authorized.lic
IF "%1" neq "" set sourceFile=%1
@rem 第二步:请输入解压后目标文件的名称,如 authorized.zip,如果不和bat文件在同一目录,请输入全路径,如:D:\license\authorized.zip
@REM set targetFile=authorized.zip
IF "%2" neq "" set targetFile=%2
@rem 第三步:请输入存放私钥的文件的名称,如 privatekey.txt,如果不和bat文件在同一目录,请输入全路径,如:D:\license\privatekey.txt
set privateKeyFile=privatekey.txt
IF "%3" neq "" set privateKeyFile=%3
IF "%3" neq "" goto load
@REM 循环遍历,当前目录以及子目录中所有的.lic
for /r %%i in (*.lic) do (
set sourceFile=%%i
@REM @echo !sourceFile! is being decrypted.
set targetFile=%%~pni.zip
call:load
)
set /a fail = %total%-%success%
@echo.
@echo Run over. total:%total% ,success:%success% ,fail:%fail%
setlocal DisableDelayedExpansion
cmd.exe
@rem #生活
@rem
@rem 执行 jar包 -Duser.language=ch -Dfile.encoding=UTF8
@rem
@rem #生活
:load
%java_exe% -jar "%~dp0%BASENAME%%max%.jar" "%sourceFile%" "%targetFile%" "%privateKeyFile%"
if "%ERRORLEVEL%" == "0" (
@echo Decrypted to "%targetFile%".
set /a success + =1
set /a total + =1
goto over
) else (
@echo "%sourceFile%" Decryption failed.
set /a total + =1
)
:showhelp
@echo help message:共有三个参数可以选择性输入
@echo @1:set sourceFile=authorized.lic :请输入获取到的.lic文件名称,如 authorized.lic, 如果不和bat文件在同一目录,请输入全路径,如:D:\license\authorized.lic
@echo @2:set targetFile=authorized.zip :请输入解压后目标文件的名称,如 authorized.zip, 如果不和bat文件在同一目录,请输入全路径,如:D:\license\authorized.zip
@echo @3:set privateKeyFile=privatekey.txt :请输入存放私钥的文件的名称,如 privatekey.txt, 如果不和bat文件在同一目录,请输入全路径,如:D:\license\privatekey.txt
:over
`