从 Windows 2003 R2 命令提示符删除文件是否会删除错误的文件?
我们有一个语音记录服务器,其唯一目的是监听电话线并将听到的内容记录到波形文件中。
根据客户要求,我们需要保留这些通话 90 天,因此每个星期一,我都会运行一个批处理作业(只是一个简单的 .bat 文件),在其中增加要删除的文件(del a_yyyymmdd*)并运行它
经过多年的操作,我们认为 Windows 删除了错误的文件。例如,本周,我会删除 2 月 9 日至 2 月 13 日(3 个月前)的文件
但我们发现它删除了上周的通话记录
我确信我的批处理作业编码正确,过去 4 年来我每周一都这样做
我们决定下周一不运行批处理作业,看看会发生什么,但是有人见过这种情况吗?
更具体一点——每个通话记录软件供应商的文件夹中都有 10000 个这样的文件,我们对此服务器没有做任何事情;没有服务包,没有更新,没有防病毒软件,什么都没有。它的真实目的是内部的、特定的。
我认为这是某种文件系统损坏
有任何想法吗?
-------- 将客户端名称转换为 # 的批处理文件 --------------
cd cappman
copy rec_06\a_20110130*####* ####
copy rec_06\a_20110131*####* ####
copy rec_06\a_20110201*####* ####
copy rec_06\a_20110202*####* ####
copy rec_06\a_20110203*####* ####
copy rec_06\a_20110204*####* ####
copy rec_06\a_20110205*####* ####
copy rec_06\a_20110130*####* ####
copy rec_06\a_20110131*####* ####
copy rec_06\a_20110201*####* ####
copy rec_06\a_20110202*####* ####
copy rec_06\a_20110203*####* ####
copy rec_06\a_20110204*####* ####
copy rec_06\a_20110205*####* ####
cd rec_06
del /q a_20110130*
del /q a_20110131*
del /q a_20110201*
del /q a_20110202*
del /q a_20110203*
del /q a_20110204*
del /q a_20110205*
cd..
copy rec_07\a_20110130*####* ####
copy rec_07\a_20110131*####* ####
copy rec_07\a_20110201*####* ####
copy rec_07\a_20110202*####* ####
copy rec_07\a_20110203*####* ####
copy rec_07\a_20110204*####* ####
copy rec_07\a_20110205*####* ####
copy rec_07\a_20110130*####* ####
copy rec_07\a_20110131*####* ####
copy rec_07\a_20110201*####* ####
copy rec_07\a_20110202*####* ####
copy rec_07\a_20110203*####* ####
copy rec_07\a_20110204*####* ####
copy rec_07\a_20110205*####* ####
cd rec_07
del /q a_20110130*
del /q a_20110131*
del /q a_20110201*
del /q a_20110202*
del /q a_20110203*
del /q a_20110204*
del /q a_20110205*
cd ..
cd rec_06
del /q a_20110301*####*
del /q a_20110302*####*
del /q a_20110303*####*
del /q a_20110304*####*
del /q a_20110305*####*
del /q a_20110306*####*
del /q a_20110307*####*
cd..
cd rec_07
del /q a_20110301*####*
del /q a_20110302*####*
del /q a_20110303*####*
del /q a_20110304*####*
del /q a_20110305*####*
del /q a_20110306*####*
del /q a_20110307*####*
今天早上刚刚检查了事件查看器 - 没有什么异常;我最近重启,组策略同步等......
除此之外,上面列出的文件夹并不是主要的录音文件夹——大约每 3 周,我就会将主录音文件夹重命名为 rec_0#,以尽量减少主文件夹中的文件数量。录音程序很旧;它没有保留日期的方法,所以我不得不自己处理;所以删除上周的文件是荒谬的,因为我们甚至没有从主录音文件夹(那些文件所在的位置)删除文件——我们正在从这些其他文件夹中删除文件(在 06 和 07 进行删除的原因
就像我说的,您看到的 #### 是客户名称;删除和复制的区别在于保留某些客户呼叫的时间更长还是更短。
—马里奥
答案1
批处理脚本编码错误,或者文件命名错误。如果遇到麻烦,Windows 不会随便编造一个文件来删除。
答案2
解决此问题的最佳方法是设置一个虚拟环境,用示例数据填充它(或复制生产内容),然后以这种方式测试脚本。
如果您确实有 NTFS 错误或损坏的 RAID 控制器,您会看到错误确实从事件查看器中弹出。由于您没有提到这些,我假设它们没有发生。最有可能的罪魁祸首是您的批处理,最简单的方法是在非实时系统上对其进行测试。
答案3
这是一个愚蠢的想法,手动运行脚本步骤。