v-7z: Automatic ZIP/RAR Scanning and Extraction Tool
Table of Contents

Archives in, files out — automatically. v-7z is a lightweight automatic archive extraction tool from vtoollab.com, designed for servers, NAS systems, data exchange directories, backup folders, and other automated file-processing environments.
Built with Go and powered by 7-Zip, v-7z periodically scans configured directories, automatically detects ZIP/RAR archives, checks whether an archive is ready to process, and chooses an appropriate extraction directory based on the archive’s internal structure.
Core Features#
- Scheduled scanning: Automatically scans configured directories at a specified interval without requiring manual extraction commands.
- Recursive directory scanning: Searches through nested directories and automatically discovers supported ZIP/RAR archives.
- Smart extraction directories: Detects whether an archive already contains a directory structure. If not, it creates a folder named after the archive to prevent files from different archives from colliding.
- File stability detection: Checks the archive’s file size and modification time before extraction, reducing the risk of processing an archive that is still being uploaded.
- Date-based directories: Supports
{yyyymmdd}in scan paths, such as/data/incoming/{yyyymmdd}, which automatically resolves to the current date. - Password-protected archives: Supports password-based extraction for encrypted ZIP/RAR archives.
- Configurable overwrite behavior: Choose whether existing files should be overwritten or preserved.
- Duplicate processing protection: Can skip archives when the target directory already exists and prevents the same archive from being processed concurrently within the running process.
- Configurable 7-Zip path: Supports custom
7z/7z.exepaths for Windows and Linux environments. - Lightweight and database-free: Requires no database or external service; a simple JSON configuration file is enough to run the tool.
How to Use#
- Download the archive below and extract it.
- Run
v-7z.exe. On the first launch, the program automatically creates aconfig.jsonconfiguration file. - Edit the configuration to specify scan directories, archive types, scan intervals, the 7-Zip executable path, and other options.
- Run continuously:
v-7zperforms an initial scan immediately after startup and then scans the configured directories periodically according to theintervalsetting.
Configuration Example (config.json)#
{
"scan_dirs": [
"./incoming",
"/data/receive/{yyyymmdd}"
],
"file_types": [
".zip",
".rar"
],
"interval": 5,
"overwrite": false,
"password": "",
"seven_zip_path": "7z",
"skip_if_exist": true,
"file_stable_seconds": 10
}Configuration Options#
| Option | Description |
|---|---|
scan_dirs | Directories to scan. Supports the {yyyymmdd} date placeholder. |
file_types | Archive extensions to process, such as .zip and .rar. |
interval | Automatic scanning interval in minutes. |
overwrite | Whether existing files should be overwritten. |
password | Password for encrypted archives. Leave empty when no password is required. |
seven_zip_path | Path to the 7-Zip executable. |
skip_if_exist | Whether to skip an archive when its target directory already exists. |
file_stable_seconds | Number of seconds used for the file stability check before extraction. |
Extraction Rules#
v-7z automatically determines where an archive should be extracted based on its internal directory structure.
If the archive already contains a directory:
backup.zip
└── data/
├── a.txt
└── b.txtv-7z extracts it directly into the parent directory:
data/
├── backup.zip
└── data/
├── a.txt
└── b.txtIf the archive contains files directly at the root:
backup.zip
├── a.txt
├── b.txt
└── c.txtv-7z automatically creates an archive-named directory:
backup.zip
backup/
├── a.txt
├── b.txt
└── c.txtThis prevents files from multiple archives from being extracted into the same directory and accidentally overwriting each other.
File Stability Detection#
One important feature of v-7z is its ability to avoid processing files that are still being written.
For example, an FTP or SFTP server may create:
large-data.zipbefore the upload has actually completed.
Instead of immediately extracting it, v-7z can compare the file’s state before and after the configured stability period:
First check
↓
Record file size and modification time
↓
Wait
↓
Second check
↓
Compare file size and modification time
↓
No changes?
↓
Start extractionThis is particularly useful for:
- FTP/SFTP receive directories
- NAS folders
- shared network directories
- backup systems
- automated data exchange servers
Date-Based Scan Paths#
Dynamic daily directories can be configured using:
/data/incoming/{yyyymmdd}For example, on September 4, 2026:
/data/incoming/20260904On the following day, the same configuration automatically becomes:
/data/incoming/20260905No daily configuration changes are required.
Typical Workflow#
A typical v-7z deployment looks like this:
Archive is uploaded
↓
v-7z scans the directory
↓
Check whether the file is stable
↓
Detect ZIP / RAR
↓
Inspect archive structure
↓
Select extraction directory
↓
Run 7-Zip
↓
Extraction completedThe program then waits for the next scheduled scan.
Recommended Use Cases#
v-7z is particularly useful for:
- FTP / SFTP data receive directories
- NAS archive folders
- server backup directories
- daily data exchange directories
- market data and log processing
- Windows file servers
- Linux background automation
- batch-processing environments
Instead of manually running:
7z x archive.zipevery time a new archive appears, simply keep v-7z running in the background.
Lightweight Architecture#
The tool intentionally keeps its architecture simple:
v-7z
│
┌──────────┼──────────┐
│ │ │
Scanner Analyzer Scheduler
│ │ │
└──────────┼──────────┘
│
Extraction
│
▼
7-ZipGo handles:
Directory scanning
File stability checks
Archive discovery
Archive structure detection
Extraction policy
Scheduling
Duplicate processing protectionwhile 7-Zip handles the actual archive parsing and extraction.
This keeps v-7z small, portable, and easy to deploy.
⬇️ Download v-7z.zip#
Version: 1.0.0 | Platform: Windows (x64)
There are no articles to list here yet.