# anyf
**Repository Path**: hrpzcf/anyf
## Basic Information
- **Project Name**: anyf
- **Description**: 一个用于打包/解包零散文件/目录的程序,兼顾将文件/目录打包并伪装成JPEG文件/解伪装功能。
- **Primary Language**: C
- **License**: LGPL-3.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-08-20
- **Last Updated**: 2023-12-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 名称:anyf
一个用于打包/解包零散文件/目录的程序,也可以将文件/目录打包并伪装成 JPEG 文件/解伪装。打包文件/目录时会保存原始目录结构,解包时创建与原始目录结构一致的新目录。打包后可单独解包其中一个文件,也可全部解包
# 说明
此仓库是本人仓库 [fapck-github](https://github.com/hrpzcf/fpack) 或 [fpack-gitee](https://gitee.com/hrpzcf/fpack) 的副本,是为了程序改名而创建的,此仓库在`fpack`基础上修复问题和改进,原仓库不再更新。由于此仓库的程序修改了生成的文件的标识符,所以`anyf`和`fapck`无法互相读取对方生成的文件。
# 目录导航
- [系统支持](#系统支持)
- [编译方法](#编译方法)
- [使用帮助](#使用帮助)
# 系统支持
#### Linux
- 测试环境:WSL2 Ubuntu x64 20.4.3 LTS;编译器:GCC 9.4.0。
#### Windows
- 测试环境:Windows 10 x64 19044;编译器:MinGW-GCC 12.1.0 / VS2022-MSVC-v142/143;SDK:Windows 10 10.0.19041.0。
#### 其他环境未测试
# 编译方法
源代码仓库:[GitHub](https://github.com/hrpzcf/anyf) 或 [Gitee](https://gitee.com/hrpzcf/anyf)
linux平台编译方法:
1. 安装CMake,安装GCC编译器;
2. 从源代码仓库下载/克隆fpack项目源代码至本地;
3. 在fpack项目目录打开命令窗口;
4. 输入命令:`cmake -DCMAKE_BUILD_TYPE:STRING=Release -B./build -G "Unix Makefiles"`;
5. 输入命令:`cmake --build ./build`;
6. 等待编译完成,生成的可执行文件在`anyf/binary`目录下,名为`anyf`。
Windows平台编译方法:
- MinGW-GCC编译器:
1. 安装CMake,安装GCC编译器(MinGW);
2. 从源代码仓库下载/克隆fpack项目源代码至本地;
3. 在fpack项目目录打开命令窗口;
4. 输入命令:`cmake -DCMAKE_BUILD_TYPE:STRING=Release -B./build -G "MinGW Makefiles"`;
5. 输入命令:`cmake --build ./build`;
6. 等待编译完成,生成的可执行文件在`anyf/binary`目录下,名为`anyf.exe`。
- Visual Studio 2022:
1. 安装IDE `Visual Studio 2022` 及 C++ 工作负载,编译工具 `MSVC v143` 或 `v142`,SDK `Windows 10 10.0.19041.0`;
2. 从源代码仓库下载/克隆fpack项目源代码至本地;
3. 打开`anyf/msbuild`目录;
4. 使用`Visual Studio`打开解决方案文件`msbuild.sln`;
5. 选择上方工具栏`解决方案配置`为`Release`,`x64`;
6. 选择上方菜单栏`生成`->`生成解决方案`;
7. 等待编译完成,生成的可执行文件在`anyf/binary`目录下,名为`anyf.exe`。
# 使用帮助
## 先决条件
1. 将 `anyf` 或 `anyf.exe` 所在目录路径加入系统环境变量 (此步可忽略,但建议加入,否则每次使用 anyf 都需要打开 cmd 再 cd 至 anyf 所在目录,不方便),一下使用帮助都默认你已经将`anyf`所在目录加入环境变量;
2. 输入命令`anyf help`查看使用帮助。
## 例 1:将指定目录打包为 ANYF 文件
- 需求:将 `E:\我的音乐`目录内的所有文件(包括其子目录内的文件)打包为名为`E:\music.af`文件。
- 命令:`anyf pack -t E:\我的音乐 -r -f E:\music.af`
- 步骤:
1. 在`E:\我的音乐`目录打开命令窗口(Windows:选中`我的音乐`文件夹,按住`shift`+鼠标右键,选`在此处打开PowerShell`)
2. 输入命令`anyf pack -t E:\我的音乐 -r -f E:\music.af`
- `anyf pack`表示使用`anyf`的`pack`功能(打包功能)
- `-t E:\我的音乐`表示将要打包的目标设置为`E:\我的音乐`文件夹,由于我们是在`E:\我的音乐`打开命令窗口,所以这个命令也可以简写为`-t .`,`.`代表当前目录,即`E:\我的音乐`
- `-r`代表递归搜索`-t`选项指定的目录,即递归搜索`E:\我的音乐`文件夹,意思是层层深入该文件夹内的子文件夹。不使用`-r`选项则只收集该文件夹下的一代子文件和文件夹
- `-f E:\music.af`表示指定生成的 ANYF 文件的路径和文件名为`E:\music.af`,也可以简写为`-f ..\music.af`,`..`表示当前目录`E:\我的音乐`的上一层,即`E:\`
3. 使用`anyf info -f E:\music.af`查看已打包的 ANYF 文件的信息。
## 例 2:将指定目录打包并伪装为 JPEG 文件
- 需求:将 `E:\我的音乐`目录内的所有文件(包括其子目录内的文件)打包并伪装为名为`E:\music.jpeg`文件。
- 命令:`anyf fake -t E:\我的音乐 -r -f E:\music.jpeg -j E:\1.jpeg`
- 步骤:
1. 在`E:\我的音乐`目录打开命令窗口(Windows:选中`我的音乐`文件夹,按住`shift`+鼠标右键,选`在此处打开PowerShell`)
2. 输入命令`anyf fake -t E:\我的音乐 -r -f E:\music.jpeg -j E:\1.jpeg`
- `anyf fake`表示使用`anyf`的`fake`功能(打包并伪装功能)
- `-t E:\我的音乐`表示将要打包的目标设置为`E:\我的音乐`文件夹,由于我们是在`E:\我的音乐`打开命令窗口,所以这个命令也可以简写为`-t .`,`.`代表当前目录,即`E:\我的音乐`
- `-r`代表递归搜索`-t`选项指定的目录,即递归搜索`E:\我的音乐`文件夹,意思是层层深入该文件夹内的子文件夹。不使用`-r`选项则只收集该文件夹下的一代子文件和文件夹
- `-f E:\music.jpeg`表示指定生成的伪装为 JPEG 的 ANYF 文件的路径和文件名为`E:\music.jpeg`,也可以简写为`-f ..\music.jpeg`,`..`表示当前目录`E:\我的音乐`的上一层,即`E:\`
3. 使用`anyf info -f E:\music.jpeg`查看已打包并伪装为 JPEG 的 ANYF 文件的信息。
## 例 3:从 ANYF 文件或伪装为 JPEG 的 ANYF 文件中提取被打包的文件
- 需求:从前两个例子打包的`E:\music.af`和`E:\music.af`中提取被打包的文件,提取到`E:\已提取`文件夹
- 命令:`anyf extr -f E:\music.af -t E:\已提取`或`anyf extr -f E:\music.jpeg -t E:\已提取`
- 步骤:
1. 在`E:\我的音乐`目录打开命令窗口(Windows:选中`我的音乐`文件夹,按住`shift`+鼠标右键,选`在此处打开PowerShell`)
2. 输入命令`anyf extr -f E:\music.af -t E:\已提取`或`anyf extr -f E:\music.jpeg -t E:\已提取`
- `anyf extr`表示使用`anyf`的`extr`功能(提取文件功能)
- `-f E:\music.af`或`-f E:\music.jpeg`表示从`E:\music.af`或`E:\music.jpeg`中提取文件
- `-t E:\已提取`表示将提取的子文件的保存目录设置为`E:\已提取`文件夹
## 更具体的使用方法可以使用`anyf help`命令查看使用帮助。