@echo off setlocal enabledelayedexpansion :Main cls :: 日期可以带星期,但是,必须以年月日的顺序排列 :: 年份必须是四位,否则会出错 set day=%date% set days=0 echo.&echo. echo 指定的日期是:%day% echo. rem 指定要追溯的天数 set input=5 :: 提取日期 for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do ( set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100 ) set /a sd-=input if %sd% leq 0 call :count cls echo.&echo. echo 指定的日期是:%day% echo. set sm=0%sm% set sd=0%sd% set olddt=%sy%%sm:~-2%%sd:~-2% echo %input% 天前的日期是:%olddt% set yyyy=%date:~0,4% set mm=%date:~5,2% set dd=%date:~8,2% rem set /a currdt= yyyy*10000+mm*100+dd set currdt=%date:~0,4%%date:~5,2%%date:~8,2% echo 当前日期是:%currdt% set dt=%date:~0,4%_%date:~5,2%%date:~8,2% REM 把 : 都替换成 -,空格替换成0 set dt=%dt::=-% set dt=%dt: =0% mkdir D:\bf\%currdt% echo 开始备份:%currdt% expdp systemcore/systemcore@ABCD dumpfile=expdp%dt%.dmp logfile=expdp.log full=y copy /y D:\bf\expdp.dmp D:\bf\%currdt%\\ copy /y D:\bf\expdp.log D:\bf\%currdt%\\ del/f/q D:\bf\expdp.dmp del/f/q D:\bf\expdp.log echo 删除过期备份: %olddt% rd D:\bf\%olddt% /s /q goto :eof :count set /a sm-=1 if !sm! equ 0 set /a sm=12, sy-=1 call :days set /a sd+=days if %sd% leq 0 goto count goto :eof :days :: 获取指定月份的总天数 set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)" set /a max=28+leap set num=0 set str=31 %max% 31 30 31 30 31 31 30 31 30 31 for %%i in (%str%) do ( set /a num+=1 if %sm% equ !num! set days=%%i&goto :eof ) goto :eof --是这样加吗?
时间: 2024-04-02 08:34:14 浏览: 166
这段代码是一个Windows批处理脚本,用于备份Oracle数据库。主要实现了以下功能:
1. 获取当前日期,计算指定天数之前的日期;
2. 使用expdp命令备份数据库,并将备份文件和日志文件复制到指定目录下;
3. 删除指定日期之前的备份目录。
至于您的问题,我不太明白您的意思,请再解释一下。
相关问题
@echo off setlocal enabledelayedexpansion set "source_folder=C:\path\to\your\folder" for %%F in ("%source_folder%\*.txt") do ( set "filename=%%~nF" set "extension=%%~xF" ren "%%F" "!filename!.csv" ) echo File extension conversion completed.循环到子目录
如果你想要批量修改目录下的txt文件以及其子目录中的txt文件为csv文件,你可以使用一个递归的批处理脚本。以下是一个修改后的脚本示例:
```batch
@echo off
setlocal enabledelayedexpansion
set "source_folder=C:\path\to\your\folder"
for /r "%source_folder%" %%F in (*.txt) do (
set "filename=%%~nF"
set "extension=%%~xF"
ren "%%F" "!filename!.csv"
)
echo File extension conversion completed.
```
这个脚本使用了 `/r` 参数来递归地遍历目录下的所有txt文件,包括子目录中的文件。其他部分与之前的脚本相似。
请确保将`source_folder`变量的值替换为你要修改的目录的路径。运行脚本后,输出窗口会显示"File extension conversion completed.",表示文件扩展名转换完成。请在运行脚本之前备份你的文件,以防止意外情况。
@echo off setlocal enabledelayedexpansion for /f "delims=" %%i in ('dir /b 周志华《Machine Learning》*') do ( echo %%i set var=%%i set var=!var:*周志华《Machine Learning》=! echo %%i !var! ren "%%i" "!var!" ) pause
这是一个批处理脚本,用于重命名以"周志华《Machine Learning》"开头的文件。脚本会将"周志华《Machine Learning》"后面的部分作为新的文件名。具体的操作步骤如下:
1. 使用`dir /b 周志华《Machine Learning》*`命令获取以"周志华《Machine Learning》"开头的文件列表。
2. 使用`for /f "delims=" %%i in ('...') do (...`循环遍历文件列表中的每个文件。
3. 在循环体中,首先使用`echo %%i`打印当前文件名。
4. 然后使用`set var=%%i`将当前文件名赋值给变量var。
5. 启用延迟扩展,使用`setlocal enabledelayedexpansion`命令。
6. 使用`set var=!var:*周志华《Machine Learning》=!`将var变量中"周志华《Machine Learning》"后面的部分截取出来,并重新赋值给var变量。
7. 使用`echo %%i !var!`打印当前文件名和新的文件名。
8. 最后使用`ren "%%i" "!var!"`命令将当前文件名重命名为新的文件名。
9. 使用`pause`命令暂停脚本的执行,以便查看输出结果。
请注意,这段代码需要在批处理脚本中运行,并且只能在Windows操作系统上使用。
阅读全文