From 14b336d60a1408ef1916b7e077aea0e599c1f374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=94=9F=E6=9D=82=E7=89=A9=E6=88=BF?= <88823709+TC999@users.noreply.github.com> Date: Mon, 9 Dec 2024 13:03:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/move_module.rs | 67 +++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 27 deletions(-) diff --git a/src/move_module.rs b/src/move_module.rs index a1388ce..301fc4c 100644 --- a/src/move_module.rs +++ b/src/move_module.rs @@ -120,34 +120,47 @@ impl MoveModule { } // 创建符号链接 - let output = std::process::Command::new("cmd") - .args([ - "/C", - "mklink", - "/D", - source_path.to_str().unwrap(), - target_path.to_str().unwrap(), - ]) - .output(); - - match output { - Ok(output) if output.status.success() => { - let _ = tx.send(Ok(format!( - "创建符号链接成功: {} -> {}", - source_path.display(), - target_path.display() - ))); - } - Ok(output) => { - let _ = tx.send(Err(format!( - "创建符号链接失败: {}", - String::from_utf8_lossy(&output.stderr) - ))); - } - Err(err) => { - let _ = tx.send(Err(format!("符号链接命令执行失败: {}", err))); + if cfg!(target_os = "windows") { + let output = std::process::Command::new("cmd") + .args([ + "/C", + "mklink", + "/D", + &format!("\"{}\"", source_path.display()), + &format!("\"{}\"", target_path.display()), + ]) + .output(); + + match output { + Ok(output) if output.status.success() => { + let _ = tx.send(Ok(format!( + "创建符号链接成功: {} -> {}", + source_path.display(), + target_path.display() + ))); + } + Ok(output) => { + let _ = tx.send(Err(format!( + "创建符号链接失败: {}", + String::from_utf8_lossy(&output.stderr) + ))); + } + Err(err) => { + let _ = tx.send(Err(format!("符号链接命令执行失败: {}", err))); + } } - } + } //else { + // 非 Windows 系统,尝试创建软链接 + //if let Err(err) = std::os::unix::fs::symlink(&target_path, &source_path) { + // let _ = tx.send(Err(format!("创建符号链接失败: {}", err))); + //} else { + // let _ = tx.send(Ok(format!( + // "创建符号链接成功: {} -> {}", + // source_path.display(), + // target_path.display() + // ))); + //} + //} }); // 主线程接收消息并更新状态