#!/usr/bin/env fish # 把之前定义的 zp 函数内容贴进来,去掉外层的 function/end set -l arg_count (count $argv) # 检查是否有输入参数 if test $arg_count -eq 0 echo "用法: zp <文件或目录1> [文件或目录2] ..." return 1 end if test $arg_count -eq 1 # 逻辑 A:单个参数,保持原样生成同名 zip set -l name (string trim -r -c / $argv[1]) set -l target "$name.zip" echo "🚀 正在多线程压缩单项目: $target" 7z a -sni -snh -tzip -mmt=on -mx=5 "$target" "$argv[1]" else # 逻辑 B:多个参数,生成 package_20251219_1540.zip set -l timestamp (date "+%Y%m%d_%H%M%S") set -l target "package_$timestamp.zip" echo "🚀 正在将 $arg_count 个项目打包至: $target" # 直接传入 $argv,7z 会自动处理多个路径 7z a -sni -snh -tzip -mmt=on -mx=5 "$target" $argv end