今天我自己第一次写了一个Windows批处理bat脚本,一起学习一下吧。

今天我自己第一次写了一个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
posted @ 2022-03-22 10:45  dawa大娃bigbaby  阅读(165)  评论(0编辑  收藏  举报