You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bat脚本中通过PowerShell为SQL Server备份文件名添加日期

问题修复:为BAT脚本备份文件名添加yyyy_mm_dd格式日期

你的脚本核心问题在于日期变量的获取与引用方式错误,导致日期无法正确追加到文件名中。以下是修正后的完整脚本及关键修改说明:

修正后的脚本

@echo off
powershell -Command "Remove-item -Path C:\Backup\db_temp\Backup_TmpTest.bak -Force"
powershell -Command "Remove-item -Path C:\Backup\db_prod\Backup_Tmp.bak -Force"

:: 正确获取yyyy_mm_dd格式的日期变量
for /f "delims=" %%a in ('powershell -Command "Get-Date -Format yyyy_MM_dd"') do set "date_str=%%a"

sqlcmd -S WIN-xxxxxxxxx -i C:\ScriptBackup\DBBck.sql -o executeBackupOut.txt -U usersql -P usersql

:: 引用日期变量生成带日期的压缩文件名
powershell -Command "Compress-Archive -Path C:\Backup\db_temp\Backup_TmpTest.bak -Force -DestinationPath C:\Backup\db_temp\Backup_TmpTest_%date_str%.zip"
powershell -Command "Compress-Archive -Path C:\Backup\db_prod\Backup_Tmp.bak -Force -DestinationPath C:\Backup\db_prod\Backup_Tmp_%date_str%.zip"
EXIT

关键修改点说明

  1. 日期变量的正确获取
    原脚本中set date = powershell -Command "Get-Date -Format MM-dd-yyyy"的写法错误:

    • BAT中直接用set无法捕获外部命令(PowerShell)的输出,必须用for /f循环读取输出并赋值
    • 变量名两侧的空格会被保留(变成date 而非date),导致后续引用失败
    • 格式改为yyyy_MM_dd以匹配你需要的日期格式
  2. 变量引用方式修正
    原脚本中用@date引用变量是错误的,BAT脚本中变量的正确引用格式是%变量名%,这里用%date_str%是为了避免和系统自带的%date%环境变量冲突。

  3. 脚本开头添加@echo off
    可选但推荐,用来关闭命令行的命令回显,让脚本运行过程更简洁。

内容的提问来源于stack exchange,提问作者64Bit1990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:33:19