2021-05-19,更新蓝奏云地址,因某种原因蓝奏云地址发生变化
Linux版的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
重启系统后生效