最近为客户端安装了新的Windows 2012 Essentials服务器。 他们有一个非常旧的XP系统,他们曾经用作文件服务器。 几个星期后,客户端文件从旧的XP系统成功迁移,客户端发现了几个0KB文件。
我已经search了他们的文件结构,有成千上万个。
好消息是我仍然有原始磁盘,文件在这个磁盘上存在和可用。 我把它作为一个image.vhd并作为一个驱动器连接到服务器。
坏消息是客户端已经使用并更新了数据迁移中的多个文件,因此不可能实现整个数据的重新导出。 或者,即使我做了一个,手动观看replace0KB,所涉及的时间由于涉及的文件数量而不实用。
这是我第一次不得不面对这样的问题,对于解决这个问题的最好办法我感到不知所措。
我知道我需要以某种方式search0KB大小的客户端数据文件,然后在find文件时,在原始磁盘上查找文件,然后复制服务器上的0KB文件,并将其replace为原始磁盘上的0KB文件。
我做的代码,但不是在Windows中。 我的编码经验是PHP,HTML,CSS,Javascript和围绕网站和数据库的其他语言。
我真的可以用一些帮助来解决这个问题。
提前致谢!
下一个脚本可能是一个起点。
@ECHO OFF >NUL @SETLOCAL enableextensions disabledelayedexpansion set "serverPath=D:\Path\files" set "backupPath=D:\bat\files" for /R "%serverPath%\" %%G in (*.*) do ( if %%~zG EQU 0 ( for /R "%backupPath%\" %%g in ("*%%~nxG") do ( if "%%~nxG"=="%%~nxg" ( echo server %%~G %%~zG echo backup %%~g %%~zg ) ) ) ) @ENDLOCAL goto :eof
基本文档参考:
注意(直接链接):
set命令 : set "serverPath=D:\Path\files"等中的括号以避免variables名称和值中出现不希望的前导空格或尾随空格 FOR /R 通过文件循环(recursion子文件夹) ; 注意参数名称%%G和%%g是区分大小写的 ~ 参数扩展(修饰符) SETLOCAL命令 if等) 示例输出 。 做了一些子文件夹,每个cca 20个文件,其中两个零大小(以字节为单位)的文件(模拟错误的复制):
==>D:\bat\ServerFault\678871.bat server D:\Path\files\folder 1\111070290_8 daftar isi.pdf 0 backup D:\bat\files\folder 1\111070290_8 daftar isi.pdf 29 server D:\Path\files\folder 1\111070290_9_daftar_gambar.pdf 0 backup D:\bat\files\folder 1\111070290_9_daftar_gambar.pdf 32 server D:\Path\files\folder 2\111070117_2_lembar_pernyataan_orisinalitas.pdf 0 backup D:\bat\files\folder 2\111070117_2_lembar_pernyataan_orisinalitas.pdf 49 server D:\Path\files\folder 2\111070117_3_lembar_pengesahan.pdf 0 backup D:\bat\files\folder 2\111070117_3_lembar_pengesahan.pdf 36