在硬盘上查找 0kb 文件,并用来自不同硬盘的同名文件替换它们

在硬盘上查找 0kb 文件,并用来自不同硬盘的同名文件替换它们

最近为客户安装了一台新的 Windows 2012 Essentials 服务器。他们有一个非常旧的 XP 系统,一直用作文件服务器。在看似成功将客户文件从旧 XP 系统迁移数周后,客户发现了几个 0KB 文件。

我搜索了它们的文件结构,有数千个这样的文件。

好消息是,我仍然有原始磁盘,并且文件仍然存在并且可以在此磁盘上使用。我将其作为 image.vhd 并作为驱动器附加到服务器。

坏消息是客户已经使用并更新了数据迁移中的多个文件,因此无法对数据进行整体重新导出。或者即使我做了一次并手动观察如何替换 0KB 文件,由于涉及的文件数量太多,所花费的时间也不切实际。

这是我第一次处理这种问题,我不知道该如何最好地解决这个问题。

我知道我需要以某种方式搜索大小为 0KB 的客户端数据文件,然后当找到一个文件时,在原始磁盘上查找该文件,然后复制并将服务器上的 0KB 文件替换为在原始磁盘上找到的文件。

我会写代码,但不是在 Windows 上。我的编码经验是 PHP、HTML、CSS、Javascript 以及其他围绕网站和数据库的语言。

我确实需要一些帮助来了解如何解决这个问题。

提前致谢!

答案1

下一个脚本可以作为起点。

@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

基本文档参考:

注(带直接链接):

示例输出。创建了一些子文件夹,每个子文件夹包含 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

相关内容