重命名具有当前日期戳的文件(bat文件)

 2021-04-27 

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% ?