• 今天我自己第一次写了一个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
    
  • 相关阅读:
    POJ2253 Frogger
    搜索专题(复习)
    机器学习资料整理
    51nod 1873 初中的算术
    Canny检测理解和Matlab实现
    Floyd+限制路径步数(快速幂优化)
    bitset优化背包问题
    Educational Codeforces Round 44 (Rated for Div. 2)
    BZOJ 3224 SBT 普通平衡树
    本科课程大数据基础
  • 原文地址:https://www.cnblogs.com/dawabigbaby/p/16038267.html
Copyright © 2020-2023  润新知