Rename files with current date stamp (bat files)
我有bat文件来运行正在创建2个文件的sql过程:
TEST_SCHEMA.dmp
TEST_SCHEMA.log
然后我使用xcopy复制文件。复制后,我想将文件名更改为:
TEST_SCHEMA.dmp-> TEST_CURRENT_DATE.dmp
TEST_SCHEMA.log-> TEST_CURRENT_DATE.log
其中Current_Date = YYYYMMDDHHMM
这是我到目前为止的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | set OWNER=myOwner set FILE_NAME=TEST_SCHEMA set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 sqlplus %OWNER%/%OWNER%@host:1521/SID @run_test.sql %OWNER% %FILE_NAME% xcopy"\\\\host\\c$\\abc\\def\\test\\%FILE_NAME%.*" /C set"_year=%MyDate:~0,4%" set"_month=%MyDate:~4,2%" set"_day=%MyDate:~6,2%" ren FILE_NAME.dmp"TEST (%_year%%_month%%_day%).txt" ren FILE_NAME.log"TEST (%_year%%_month%%_day%).txt" pause 0 |
结果应类似于:
TEST_201806131006.dmp
TEST_201806131006.log
但是我不知道如何正确使用重命名并将日期添加到文件名。
使用WMIC创建DateTime标记:
1 2 | For /F %%A In ('WMIC OS Get LocalDateTime') Do If Not"%%~xA"=="" Set"ds=%%~nA" Ren"TEST_*.*""TEST_%ds:~,-2%.*" |
创建包含日期戳的文件。
1 2 3 4 5 6 7 8 | set OWNER=myOwner for /f %%A in (' powershell -nop -c"get-date -f yyyyMMdd" ') do SET"FILE_NAME=TEST_SCHEMA_%%A" set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 sqlplus %OWNER%/%OWNER%@host:1521/SID @run_test.sql %OWNER% %FILE_NAME% xcopy"\\\\host\\c$\\abc\\def\\test\\%FILE_NAME%.*" /C |
以上答案对我来说似乎有点复杂。我有一些文件,在开发程序时会不断更新。万一我摔坏了东西而没有立即意识到,我需要一种每天备份几次的方法。这就是我放入批处理程序(为您的文件名修改)中的内容,然后通过Windows Task Scheduler对其进行控制。 (实际上,我复制了我正在使用的文件夹,然后使用日期/时间调整对其进行了重命名。)
1 | ren TEST_SCHEMA.dmp"TEST_%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%.dmp" |
我感谢Mofi在这里向其他用户提供了答案...
什么:?-4,4%te:?-10,2%te:?-7,2%_%时间:?0.2 %%时间:?3.2% ?