Windows 备份和还原 DirectX 通过以上的 PowerShell 脚本和批处理文件,你可以轻松地备份 DirectX 相关的文件。脚本会根据文件列表检查和复制文件,并将它们存储到指定的备份目录中。这样,你就可以确保在需要时能够恢复这些重要的文件。

 

Download DirectX End-User Runtime from Official Microsoft Download Center

如果你需要备份 DirectX,可以按照以下步骤进行:

  1. 按下“Windows + R”键打开运行窗口,在窗口中输入“dxdiag”命令并按下回车键打开 DirectX 诊断工具。

  2. 在 DXDiag 窗口中,点击“运行 64 位 DxDiag”(如果你的系统为 32 位,则跳过此步骤)。

  3. 在弹出的“DxDiag 64 位”窗口中,选择“显示”标签页,并记录下显卡和驱动程序的信息;

  4. 选择“声音”标签页,并记录下音频设备的信息;

  5. 选择“输入”标签页,并记录下输入设备的信息。

  6. 在备份 DirectX 文件之前,建议你先到 Microsoft 官网下载最新版的 DirectX 运行库。

  7. 打开 Windows 资源管理器,找到 C:\Windows\System32 目录(如果你的系统为 32 位,则是 C:\Windows\SysWOW64 目录)。

  8. 将该目录下所有以“d3d”、“dinput”、“dsound”、“dxgi”、“dxva”等开头的 DLL 文件以及“D3DCompiler_47.dll”文件作为备份文件拷贝到另一个安全的地方。

  9. 如果你是 64 位操作系统,则还需将 C:\Windows\SysWOW64 目录下所有以“d3d”、“dinput”、“dsound”、“dxgi”、“dxva”等开头的 DLL 文件以及“D3DCompiler_47.dll”文件作为备份文件拷贝到另一个安全的地方。

这样,你就完成了 DirectX 的备份。如果恢复 DirectX 备份后发生了问题,你可以把备份的文件覆盖回原来位置即可。


通过 PowerShell 脚本备份 DirectX 文件,你可以编写一个高阶的 PowerShell 脚本,将其作为批处理文件执行。下面是一个实现备份 DirectX 相关文件的示例:

步骤:

  1. 确定需要备份的 DirectX 文件: DirectX 文件通常位于以下路径:

    • C:\Windows\System32\
    • C:\Windows\SysWOW64\(对于 64 位操作系统,存储 32 位应用程序的 DLL 文件)

    需要备份的文件可能包括:

    • d3dx9_43.dll(DirectX 9)
    • d3d11.dll(DirectX 11)
    • d3dcompiler_43.dll
    • dxgi.dll
    • xinput1_3.dll
    • 其他与 DirectX 相关的 DLL 文件
  2. 创建备份目录: 你可以将备份文件存储在某个目录中,例如 C:\Backup\DirectX\

  3. 编写 PowerShell 脚本: 以下是一个 PowerShell 脚本的示例,用于批量备份 DirectX 文件。

PowerShell 脚本:

powershell
# 设置源文件夹和备份文件夹路径
$sourcePaths = @(
    "C:\Windows\System32",
    "C:\Windows\SysWOW64"
)

# 设置备份目录(可以修改为你想要的路径)
$backupFolder = "C:\Backup\DirectX"
$date = Get-Date -Format "yyyyMMdd_HHmmss"
$backupFolderWithDate = "$backupFolder\$date"

# 如果备份目录不存在,则创建它
if (-not (Test-Path -Path $backupFolderWithDate)) {
    New-Item -Path $backupFolderWithDate -ItemType Directory
    Write-Host "备份目录已创建:$backupFolderWithDate"
}

# 备份文件列表
$fileList = @(
    "d3dx9_43.dll",
    "d3d11.dll",
    "d3dcompiler_43.dll",
    "dxgi.dll",
    "xinput1_3.dll"
)

# 开始备份
foreach ($sourcePath in $sourcePaths) {
    foreach ($file in $fileList) {
        $sourceFilePath = Join-Path -Path $sourcePath -ChildPath $file

        # 检查文件是否存在
        if (Test-Path -Path $sourceFilePath) {
            $backupFilePath = Join-Path -Path $backupFolderWithDate -ChildPath $file
            Copy-Item -Path $sourceFilePath -Destination $backupFilePath
            Write-Host "已备份文件: $file 到 $backupFilePath"
        } else {
            Write-Host "文件不存在: $file"
        }
    }
}

Write-Host "DirectX 文件备份完成!"

脚本详细解释:

  1. 设置源文件夹和备份目录:

    • $sourcePaths 包含 DirectX 文件可能所在的文件夹路径。
    • $backupFolder 是你希望存储备份的目标路径,备份文件会存储在此路径下的子文件夹中。
  2. 创建备份文件夹: 如果备份文件夹不存在,脚本会自动创建一个包含当前日期时间的子文件夹,以便于管理备份文件。

  3. 定义文件列表:$fileList 中列出了需要备份的 DirectX 文件(可以根据需要修改或添加其他文件)。

  4. 备份过程: 脚本遍历源路径中的每个文件夹,并检查文件是否存在。如果文件存在,它将被复制到目标备份文件夹。

  5. 日志输出: 脚本将输出备份过程的状态,包括每个文件是否成功备份,以及文件是否不存在的情况。

如何运行:

  1. 将上述 PowerShell 脚本保存为 .ps1 文件,例如 Backup-DirectX.ps1
  2. 右键单击文件并选择“使用 PowerShell 运行”。
  3. 如果遇到执行策略限制,可以使用以下命令解除限制:
    powershell
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

批处理文件 (.bat):

你也可以将 PowerShell 脚本嵌入到一个批处理文件中,以便通过双击 .bat 文件来执行。下面是一个批处理文件的示例:

 
@echo off
powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Path\To\Backup-DirectX.ps1"
pause

通过以上的 PowerShell 脚本和批处理文件,你可以轻松地备份 DirectX 相关的文件。脚本会根据文件列表检查和复制文件,并将它们存储到指定的备份目录中。这样,你就可以确保在需要时能够恢复这些重要的文件。


在高阶 PowerShell 脚本中,我们可以实现将备份的 DirectX 文件还原到原来的系统目录。以下是一个示例脚本,用于将之前备份的 DirectX 文件还原到系统文件夹。

步骤:

  1. 确定备份文件夹和目标系统文件夹: 你需要指定之前备份的文件夹和系统文件夹路径。

  2. 编写 PowerShell 脚本: 以下是一个 PowerShell 脚本示例,用于将备份的 DirectX 文件还原到系统目录中。

PowerShell 脚本:

powershell
# 设置备份目录和目标系统文件夹
$backupFolder = "C:\Backup\DirectX"  # 请根据实际路径修改
$date = "20250918_120000"  # 设置备份日期(可以根据实际备份日期修改)
$backupFolderWithDate = "$backupFolder\$date"

$systemPaths = @(
    "C:\Windows\System32",
    "C:\Windows\SysWOW64"
)

# 需要还原的文件列表
$fileList = @(
    "d3dx9_43.dll",
    "d3d11.dll",
    "d3dcompiler_43.dll",
    "dxgi.dll",
    "xinput1_3.dll"
)

# 开始还原
foreach ($systemPath in $systemPaths) {
    foreach ($file in $fileList) {
        $backupFilePath = Join-Path -Path $backupFolderWithDate -ChildPath $file
        $systemFilePath = Join-Path -Path $systemPath -ChildPath $file

        # 检查备份文件是否存在
        if (Test-Path -Path $backupFilePath) {
            Copy-Item -Path $backupFilePath -Destination $systemFilePath -Force
            Write-Host "已将文件还原: $file 到 $systemFilePath"
        } else {
            Write-Host "备份文件不存在: $file"
        }
    }
}

Write-Host "DirectX 文件还原完成!"

脚本解释:

  1. 设置路径:

    • $backupFolder 是备份文件夹路径,你需要指定实际的备份文件夹路径。
    • $date 是备份日期,确保指定正确的日期和时间子文件夹。
    • $systemPaths 是目标系统文件夹路径列表(C:\Windows\System32 和 C:\Windows\SysWOW64)。
  2. 定义文件列表:$fileList 中列出了需要还原的 DirectX 文件。你可以根据需要添加或删除文件。

  3. 还原过程: 脚本会遍历每个系统文件夹,并检查是否有对应的备份文件。如果备份文件存在,它会将文件复制到目标路径。

  4. 日志输出: 每次还原文件时,脚本会输出日志,指示文件是否成功还原。

如何运行:

  1. 将脚本保存为 .ps1 文件,例如 Restore-DirectX.ps1
  2. 右键单击文件并选择“使用 PowerShell 运行”。
  3. 如果遇到执行策略限制,可以使用以下命令解除限制:
    powershell
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

批处理文件 (.bat):

如果你想通过双击 .bat 文件来运行 PowerShell 脚本,可以创建以下批处理文件:

 
@echo off
powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Path\To\Restore-DirectX.ps1"
pause

这个 PowerShell 脚本提供了一种简便的方式来还原之前备份的 DirectX 文件。通过将备份文件复制到系统文件夹中,你可以确保系统中的 DirectX 文件保持最新或恢复到正常状态。


批处理文件来备份 DirectX 文件,具体步骤如下:

  1. 打开记事本,将以下命令复制到新建的文本文档中:
Copy Code
@echo off
echo 正在备份 DirectX 文件,请稍候...
xcopy "C:\Windows\System32\d3d*.dll" ".\DirectX_backup\System32\" /y /v /f /s
xcopy "C:\Windows\System32\dinput*.dll" ".\DirectX_backup\System32\" /y /v /f /s
xcopy "C:\Windows\System32\dsound*.dll" ".\DirectX_backup\System32\" /y /v /f /s
xcopy "C:\Windows\System32\dxgi*.dll" ".\DirectX_backup\System32\" /y /v /f /s
xcopy "C:\Windows\System32\dxva*.dll" ".\DirectX_backup\System32\" /y /v /f /s
xcopy "C:\Windows\System32\D3DCompiler_47.dll" ".\DirectX_backup\System32\" /y /v /f /s
echo 备份完成!
pause
  1. 将文本文档保存为“backup.bat”。

  2. 双击运行该批处理文件,等待备份完成。

备份文件夹中添加时间戳以便于区分备份文件,可以尝试以下修改:

Copy Code
@echo off
setlocal enabledelayedexpansion

rem 获取当前时间,格式为 yyyyMMdd_HHmmss
set "timestamp=%date:/=_%_%time::=.%"
set "timestamp=!timestamp:,=_!"

echo 正在备份 DirectX 文件,请稍候...
mkdir ".\DirectX_backup\%timestamp%"
xcopy "C:\Windows\System32\d3d*.dll" ".\DirectX_backup\%timestamp%\System32\" /y /v /f /s
xcopy "C:\Windows\System32\dinput*.dll" ".\DirectX_backup\%timestamp%\System32\" /y /v /f /s
xcopy "C:\Windows\System32\dsound*.dll" ".\DirectX_backup\%timestamp%\System32\" /y /v /f /s
xcopy "C:\Windows\System32\dxgi*.dll" ".\DirectX_backup\%timestamp%\System32\" /y /v /f /s
xcopy "C:\Windows\System32\dxva*.dll" ".\DirectX_backup\%timestamp%\System32\" /y /v /f /s
xcopy "C:\Windows\System32\D3DCompiler_47.dll" ".\DirectX_backup\%timestamp%\System32\" /y /v /f /s
echo 备份完成!
pause

这个批处理脚本会将备份文件夹命名为当前时间戳,例如“2023-06-10_12.34.56”,并将备份的 DirectX 文件保存在该文件夹中。这样可以方便的找到特定时刻备份的 DirectX 文件。

 

还原 DirectX 文件的批处理文件示例:

Copy Code
@echo off
setlocal enabledelayedexpansion

echo 正在还原 DirectX 文件,请稍候...
set /p timestamp="请输入备份时间戳(格式为 yyyy-MM-dd_HH.mm.ss):"

if exist ".\DirectX_backup\%timestamp%\System32" (
  xcopy ".\DirectX_backup\%timestamp%\System32\d3d*.dll" "C:\Windows\System32\" /y /v /f /s
  xcopy ".\DirectX_backup\%timestamp%\System32\dinput*.dll" "C:\Windows\System32\" /y /v /f /s
  xcopy ".\DirectX_backup\%timestamp%\System32\dsound*.dll" "C:\Windows\System32\" /y /v /f /s
  xcopy ".\DirectX_backup\%timestamp%\System32\dxgi*.dll" "C:\Windows\System32\" /y /v /f /s
  xcopy ".\DirectX_backup\%timestamp%\System32\dxva*.dll" "C:\Windows\System32\" /y /v /f /s
  xcopy ".\DirectX_backup\%timestamp%\System32\D3DCompiler_47.dll" "C:\Windows\System32\" /y /v /f /s
  echo 还原完成!
) else (
  echo 备份不存在或时间戳不正确!
)
pause

该脚本会先提示用户输入备份的时间戳(例如“2023-06-10_12.34.56”),然后根据时间戳找到对应的备份文件夹,并将备份的 DirectX 文件还原到系统目录下。如果备份不存在或时间戳不正确,脚本会给出相应的提示信息。

建议在使用还原 DirectX 文件的批处理脚本之前先备份当前的 DirectX 文件,以便于在还原后出现问题时可以再次还原回来。

 

posted @ 2023-06-10 17:04  suv789  阅读(200)  评论(0)    收藏  举报