.bat批处理(七):PC端从手机内复制文件到本地

文章目录

  • 前言
  • 准备条件
  • 实现代码
  • 代码分析
  • 代码测试
    • 拷贝成功
    • 拷贝失败
  • 总结

前言

解决方案都是在实际工作中遇到问题时想出来解决方法,很多方法乍一看根本用不上,但实际操作中发现真的很有用,今天提到的这个方法就是这种类型的。

游戏开发中常常会将一些关键信息或者调试信息写入到日志文件中,这样可以在出现BUG的情况时,通过分析日志文件来进一步定位问题的原因,在真机上跑游戏时就需要将手机中的日志文件导出到电脑上,方便查看,这就是这篇文章所讲的内容。

可能有人会说,现在手机连接电脑很方便,直接插一根数据线,在“我的电脑”里找到手机,然后就可以像从其他文件夹复制一下,从手机中把文件复制下来,可事实上并不是这样的,手机连接电脑有个缓存的毛病。

这种问题就是第一次连接的时候查看文件是正常,但是复制删除几次文件以后就会出现缓存的现象,我明明新建了一个文件就是找不到,比如产生了新的日志文件,通过数据线连接电脑以后,在文件夹中看不到,这时可以通过adb命令复制出来,虽然看不到,但是文件是确实存在的。

准备条件

  1. 需要电脑安装adb,常用来调试手机的电脑一定会安装过这个东西,有些版本直接可以使用,具体怎么安装,网上的教程有很多。
  2. 手机需要打开USB调试模式,打开模式前可能需要开启开发者选项,同样开启USB调试的教程也有很多。

实现代码

@SET LOG_FILE_NAME=project_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log

adb pull /storage/emulated/0/project2.log ./%LOG_FILE_NAME%

@echo off
echo running result:
if %errorlevel%==0 goto endSuccess

:endFail
echo Copy data from phone to pc falied!!!
pause
exit /b 1

:endSuccess
echo Copy data from phone to pc success!!!
pause
exit /b 0

代码分析

其实这一大段中核心的代码只有一句adb pull /storage/emulated/0/project2.log ./%LOG_FILE_NAME%,之前的变量LOG_FILE_NAME是为了解决多次导出文件时同名会覆盖的问题,加上时间字符串可以防止重名出现,adb pull 手机中路径+文件名 本地PC路径+文件名就是实际复制的过程

如果复制过程中不报错就会走到:endSuccess代码段,如果报错就会走到:endFail代码段,两段代码会返回不同的值供调用者判断,整个代码文件加了一些提示消息,如果嫌麻烦的话直接使用adb pull /storage/emulated/0/project2.log ./%LOG_FILE_NAME%也是可以的。

代码测试

直接在cmd命令行中运行就可以,假设以上的bat文件名为CopydataPhone2PC.bat,手机根目录下有文件project.log,我们可以尝试拷贝project.log和project2.log两个文件到手机看看效果,当然project2.log文件是不存在的肯定会失败

拷贝成功

E:\batTool>CopydataPhone2PC.bat

E:\batTool>adb pull /storage/emulated/0/project.log ./project_20190822102324.log
124 KB/s (1284 bytes in 0.010s)
running result:
Copy data from phone to pc success!!!
请按任意键继续. . .

拷贝失败

E:\batTool>CopydataPhone2PC.bat

E:\batTool>adb pull /storage/emulated/0/project2.log ./project_20190822102422.log
remote object '/storage/emulated/0/project2.log' does not exist
running result:
Copy data from phone to pc falied!!!
请按任意键继续. . .

总结

有些领域真的很奇妙,如果你之前没有接触过,直接告诉你,手机里有个很普通的文件,但是你就是看不到,你会不会觉得很奇怪,针对于这些奇怪的问题其实别人可能早就有了解决方案,百思不得其解时不妨浏览一下。

你可能感兴趣的:(Practical,Dos/bat)