Linux版VMware复制文件失败bug修复

2021-05-19,更新蓝奏云地址,因某种原因蓝奏云地址发生变化

Linux版的VMware,从虚拟机向宿主机(真实机)复制文件时会失败
VMware复制文件失败
原因在于VMware将~/.cache/vmware/drag_and_drop/随机路径名/文件名当作/随机路径名/文件名
~/.cache/vmware/drag_and_drop/Aag39l/迅雷.lnk/Aag39l/迅雷.lnk

直接修改VMware显然不现实,那么曲线救国:直接上效果图
在这里插入图片描述
此工具使用Go+Shell编写,当需要从VMware虚拟机复制文件到宿主机时,在VMware虚拟机内执行复制操作(如Win7虚拟机,选中一个文件Ctrl+C),然后在宿主机你想要的位置打开终端
在这里插入图片描述
执行vmmv,会将刚刚复制的文件移动到当前目录,vmmv这个名字是VMware的VM+mv命令的意思。
代码如下:

package main

import (
        "os/exec"
        "fmt"
        "os"
        "strings"
)

func main() {
        var returnValue []byte
        var err error
        var cmd *exec.Cmd

        //运行连续的shell命令,需要添加参数,否则报错
        cmd = exec.Command("/bin/bash","-c",`
        route=$(ls -t ~/.cache/vmware/drag_and_drop/ | head -n 1)
        route2=$(ls ~/.cache/vmware/drag_and_drop/${route}/)
        if [[ ${route} == '' ]] || [[ ${route2} == '' ]]
        then
                echo '没有文件'
        else
                mv ~/.cache/vmware/drag_and_drop/${route}/* ./
        fi
        `)
        if returnValue,err = cmd.Output();err != nil {
                fmt.Println(err)
                os.Exit(1)
        }

        //格式化shell的输出,去除换行符
        result := strings.Trim(string(returnValue),"\n")
        if result == "" {
                fmt.Println("OK!")
        }else{
                fmt.Println("Error",result)
        }
}

编译好的vmmv下载:https://dengwenyi.lanzoui.com/iQhk9napgva
创建/usr/local/vmmv/bin将可执行文件移动到/usr/local/vmmv/bin
vim /etc/profile,添加export PATH=$PATH:/usr/local/vmmv/bin
重启系统后生效
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Deng_Xian_Shemg

捐助1元钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值