Windows批处理:从USB驱动器自动Dataimport

我编写了一个脚本,用于检测USB设备何时挂载(I :),何时硬盘上的文本数据库不是空的,它应该将数据复制到驱动器C:上的新生成文本文件中,并使用唯一的名称。 操作完成后,应删除数据库并创build一个新的空的数据库。

我有两个问题,我无法解决。 第一个文件包含所有预期的数据。 之后,数据库被删除并新build。 但是第二轮的规模仍然是旧的,所有的操作都是重复的。 尽pipe数据库是空的。

第二个问题是,如果条件似乎不起作用。 刹车总是被执行。

@echo off :loop if exist I:\ ( :GETTEMPNAME set TMPFILE=UL%DATE%_%RANDOM% if exist "%TMPFILE%" GOTO :GETTEMPNAME echo %TMPFILE% echo success I: set size=0 call :filesize "I:\database.txt" echo file size is %size% set sizelimit = 6 if "%size%" GTR "%sizelimit%" ( echo greater C: cd C:\SaveData type NUL > %TMPFILE%.txt echo S:OK; >> %TMPFILE%.txt echo accessing data I: for /F "tokens=*" %%A in (database.txt) do ( C: echo %%A >> %TMPFILE%.txt I: ) C: echo E:OK >> %TMPFILE%.txt I: del "database.txt" type NUL > database.txt ) ping 127.0.0.1 -n 40 > 0 ) else ( echo waiting for data ping 127.0.0.1 -n 40 > NUL ) goto loop :: set filesize of 1st argument in %size% variable, and return :filesize set size=%~z1 

这是来自cmd的日志: 在这里输入图像描述

任何帮助表示赞赏! 谢谢

我已经重写了你的脚本,并假定C:\SaveData\为输出文本文件的预期位置, 如果我的假设不正确请更改它

 @Echo Off :Loop If Not Exist I:\ (Echo=Waiting for data ... Timeout 40 /NoBreak>Nul GoTo Loop) CD /DI:\ If Not Exist "database.txt" Exit/B Echo=Success SetLocal :GetTempName Set "TmpFile=C:\SaveData\UL%DATE%_%RANDOM%.txt" If Exist "%TmpFile%" GoTo GetTempName Set "SizeLimit=6" For %%A In ("database.txt") Do Set "Size=%%~zA" Echo=File size is %Size% If %Size% Gtr %SizeLimit% (Echo=Greater Echo=S:OK;>"%TmpFile%" Echo=Accessing data ... Type "database.txt">>"%TmpFile%" Echo=E:OK>>"%TmpFile%" Type Nul>"database.txt") EndLocal Timeout 40 /NoBreak>Nul GoTo Loop