rust 命令行程序开发模板

180it 2023-03-03 AM 420℃ 0条
use std::process::{exit, Command};
use std::time::Duration;

fn main() {
    use std::time::Instant;
    let now = Instant::now(); //计算耗时

    //=====================================================

    println!(">>>>>>>>>>>>>>>>>>>>命令行工具开发模板<<<<<<<<<<<<<<<<<<<<<<<<");
    println!("****************************************************************************");
    println!("*                                                                           ");
    println!("* 该工具仅适用于xxxx 如果在其它系统上使用导致出现问题,作者概不负责         ");
    println!("*                                                                           ");
    println!("* 该工具使用前请先xxxxxx!");
    println!("* 该工具使用前请先xxxxxx!");
    println!("* 该工具使用前请先xxxxxx!");
    println!("*                                                                           ");
    println!("* 作者:xxxxxxxxx                                                           ");
    println!("* 时间:2021年10月7日11:13:55                                               ");
    println!("* 该工具使用Rust语言构建                                                     ");
    println!("*                                                                          ");
    println!("****************************************************************************");

    let position = input_task_bar_position();
    if position > 3 {
        println!("输入错误!");
        return;
    }

    if position == 0 {
        println!("退出");
        exit(0);
    }

    if position == 1 {
        reboot_explorer();
        println!("重启资源管理器成功!");
        exit(0);
    }

    //=====================================================

    //计算耗时
    let duration = now.elapsed();
    let s = duration.as_secs();
    let mut ms = duration.as_millis();
    let mut us = duration.as_micros();
    us -= ms * 1000;
    ms -= s as u128 * 1000;
    println!("耗时:{} s {} ms {} us", s, ms, us);
}

/// 输入要修改的位置
fn input_task_bar_position() -> u8 {
    println!("\n请输入要更改任务栏的位置:");
    println!("注:0 表示退出,1 表示重启资源管理器,2 表示xxx,3 表示xxxx,其它输入无效!");
    let mut input_data = String::new();
    std::io::stdin()
        .read_line(&mut input_data)
        .expect("read line error!");
    match input_data.trim().parse::<u8>() {
        Ok(data) => {
            println!("输入:{}", data);
            return data;
        }
        Err(_) => {
            println!("输入错误!");
        }
    }
    return 0xff as u8;
}

/// 重启资源管理器
fn reboot_explorer() {
    let _ = Command::new("cmd.exe")
        .arg("/c")
        .arg("taskkill /im explorer.exe /f")
        .output();
    std::thread::sleep(Duration::from_secs(1));
    let _ = Command::new("cmd.exe")
        .arg("/c")
        .arg("explorer.exe")
        .spawn();
}

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

rust 命令行程序开发模板