batch-file - 有没有办法通过批处理脚本在某些条件下将文件保存在两个不同的文件夹中
问题描述
抱歉,我是批处理脚本的新手,只是想根据某些条件将 dmp 文件保存在特定文件夹中
如果 DayName = Monday 或 tuesday 然后设置 FileName=C:\backupdb\kgote_%%k_%%j_%%i 如果 DayName = Wednesday 或 Thrusday 然后设置 FileName=C:\backupdb1\kgote_%%k_%%j_%%一世
echo Taking backup of Kenduguri Database
for /F "tokens=1-4 delims=/ " %%i in ('date /t') do (
set DayOfWeek=%%i
set Month=%%j
set Day=%%k
set Year=%%l
REM set Date=%%i %%k %%j %%l
set FileName=C:\backupdb\kgote_%%k_%%j_%%i
)
exp kgote/kgote@ltcdb file=%FileName%.dmp log=%FileName%.log full=y
解决方案
这是一个示例,根据您发布时问题中的信息,您需要自己正确修改才能使用它,因为您没有确认正确的文件路径。
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
For /F Delims^=^= %%G In ('"(Set _) 2> NUL"') Do Set "%%G="
For /F %%G In ('%SystemRoot%\System32\wbem\WMIC.exe Path Win32_LocalTime Where^
"DayOfWeek > 0 And DayOfWeek < 5" Get Day^, DayOfWeek^, Month /Value 2^>NUL'
) Do Set "_%%G" 2>NUL
If Not Defined _DayOfWeek (GoTo :EOF) Else Set "_FolderPath=C:\Folder2"
If %_DayOfWeek% Lss 3 Set "_FolderPath=C:\Folder1"
For /F Tokens^=%_DayOfWeek% %%G In ("Monday Tuesday Wednesday Thursday"
) Do Set "_DayOfWeek=%%~G"
For %%G In (Day Month) Do (Set /A _%%G += 100 & SetLocal EnableDelayedExpansion
For %%H In ("!_%%G:~-2!") Do EndLocal & Set "_%%G=%%~H")
Set "_FileName=%_FolderPath%\pcote_%_Day%_%_Month%_%_DayOfWeek%"
"F:\ull\PathTo\exp.exe" kgote/kgote@ltcdb file=%_FileName%.dmp log=%_FileName%.log full=y
如果日期名称不是Monday
、Tuesday
、Wednesday
或,则此脚本将直接关闭且不执行任何操作Thursday
。
您可能需要修改的部分仅限于仅C:\Folder2
在线7
(即周三和周四备份路径的位置)、C:\Folder1
在线8
(即周一和周二备份路径的位置)和F:\ull\PathTo
在线14
(exp.exe 命令行实用程序的位置)。
推荐阅读
- c# - 当我使用 Task.Run() 调用方法时,它必须是异步方法吗?
- swift - 无法使用在 Xcode 10.1 中使用 swift 创建的静态库
- firebase - 如何绕过 Firebase Hosting 的默认 Vary on Authorization 标头
- react-native - 如何识别 react-native 崩溃日志中报告的确切问题?
- headless - 无头 raspi 不工作 - android.permission.CONTROL_KEYGUARD
- python - 我应该在 python 的类中使用我自己的属性吗?
- html - 如何在表 td 字段中设置固定宽度?
- python - 如何在不触发多个回调的情况下同步 Bokeh Wdigets
- labview - 安装后控制面板中LabVIEW应用程序的自定义应用程序图标
- python - 根据另一列查找列值的顶级类别