最近在学习love2d,打包安卓的时候需要将文件夹压缩、重命名.love文件、将文件移入打包脚本文件夹下
但是每次这样操作太耗费时间所以想到用windows的cmd来制作一键脚本

压缩文件

先下载7z压缩软件,这是个干净、轻量的压缩软件(1.4mb,之前的bandzip总是提醒我升级)
7z.exe 7z.dll文件拖入C:\Windows系统默认的工作环境下

压缩:
7z a archive1.zip subdir\ :增加subdir文件夹下的所有的文件和子文件夹到archive1.zip中,archived1.zip中的文件名包含subdir前缀。
7z a archive2.zip .\subdir\* :增加subdir文件夹下的所有的文件和子文件夹到archive1.zip中,archived2.zip中的文件名不包含subdir前缀。

解压:
`7z x test.zip -of:test # -o表示输出目录,注意其与目录路径之间没有空格
7z x test.zip -o"f:test abc" # 假如输出文件夹有空格,用引号包裹`

若需要修改后缀
ren "D:\Program Files\love2d\project_LOVE\StartGamedev\game.zip" game.love
现在有能够对指定文件夹的打包脚本,但还有改进的地方,对所有文件夹适用。
之前用过转换网易云特殊音乐格式到普通mp3格式的程序,将音乐文件拖到该程序图标上,程序自动进行格式转换,搜了一下shell有没有类似的功能,于是如下:

@echo off
echo 无后缀名: %~n1
echo 有后缀名: %~nx1
echo 绝对路径: %1
echo 短路径名的绝对路径: %~s1
echo 驱动器和路径: %~dp1
echo 驱动器: %~d1
echo 路径: %~p1
echo 文件属性: %~a1
echo 日期/时间: %~t1
echo 文件大小: %~z1
pause

在这个脚本中执行我需要的另一个脚本,需要先cd到相应文件夹,然后直接call

cd /d D:\Program Files\love2d\project_LOVE\StartGamedev
call make-apk.bat

一键脚本(路径建议都加上引号,否则一些带空格的文件夹无法识别):

7z a "D:\Program Files\love2d\project_LOVE\StartGamedev\game.zip" %1\*
ren "D:\Program Files\love2d\project_LOVE\StartGamedev\game.zip" game.love
cd /d D:\Program Files\love2d\project_LOVE\StartGamedev
call make-apk.bat

参考:7Z命令行详解
通过拖曳获取文件信息的bat代码分享
cmd 如何在bat文件中调用另一个bat文件