请帮我用rust写一个每隔2个小时清理系统temp下的文件以及文件夹要跳过删除不了的的程序要开机时候自动启动的代码
时间: 2024-05-12 17:20:52 浏览: 175
以下是一个用Rust编写的程序,可以定期清理系统临时文件夹,并在开机时自动启动。
```rust
use std::fs;
use std::thread;
use std::time::{Duration, SystemTime};
fn main() {
// 设置清理间隔为2小时
let interval = Duration::from_secs(2 * 60 * 60);
// 获取系统临时文件夹路径
let temp_dir = std::env::temp_dir();
// 启动清理线程
thread::spawn(move || loop {
// 等待指定间隔
thread::sleep(interval);
// 获取当前时间
let now = SystemTime::now();
// 遍历临时文件夹中的所有文件和文件夹
for entry in fs::read_dir(&temp_dir).unwrap() {
if let Ok(entry) = entry {
let path = entry.path();
// 如果文件或文件夹的修改时间早于当前时间两个小时,则删除之
if let Ok(metadata) = fs::metadata(&path) {
if metadata.modified().unwrap().elapsed().unwrap() > interval {
if metadata.is_file() {
fs::remove_file(&path).unwrap();
} else if metadata.is_dir() {
fs::remove_dir_all(&path).unwrap();
}
}
}
}
}
});
// 注册开机自启动项
if let Ok(mut key) = winreg::RegKey::predef(winreg::enums::HKEY_CURRENT_USER)
.create_subkey(r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
{
key.set_value(
"TempCleaner",
format!("\"{}\" --start", std::env::current_exe().unwrap().display()),
)
.unwrap();
}
}
```
可以通过 `--start` 命令行参数来启动程序,并在注册表中添加开机自启动项。例如:
```
$ ./temp_cleaner.exe --start
```
阅读全文