首页 > 解决方案 > 有没有办法通过批处理脚本在某些条件下将文件保存在两个不同的文件夹中

问题描述

抱歉,我是批处理脚本的新手,只是想根据某些条件将 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

标签: batch-filecmd

解决方案


这是一个示例,根据您发布时问题中的信息,您需要自己正确修改才能使用它,因为您没有确认正确的文件路径。

@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

如果日期名称不是MondayTuesdayWednesday或,则此脚本将直接关闭且不执行任何操作Thursday

您可能需要修改的部分仅限于仅C:\Folder2在线7 (即周三和周四备份路径的位置)C:\Folder1在线8即周一和周二备份路径的位置F:\ull\PathTo在线14exp.exe 命令行实用程序的位置)


推荐阅读