使用批处理脚本将日期附加到文件名
appending date with filename using batch scripts
我正在尝试为不同类型的文件设置管理。 PFB 场景。
我在网络路径中有以下一组文件(\NAS.domain.local\data\Arasan)
- test.sql
- test1.txt
- test2.log
我正在尝试重命名文件,如下所示并将文件移动到 .\Archive\ 目录
- Test_15-12-2016_151428.sql
- Test1_15-12-2016_151428.txt
- Test_15-12-2016_151428.log
([文件名]_DD-MM-YYYY_HHMISS.[ext])
我已经构建了以下批处理脚本。
@echo ON
SET Log_Path=\NAS.domain.local\data\Arasan
SET Script_Path=C:\Scripts
REM ###########################################REM
REM ## Do make any changes to the text below ##REM
REM ###########################################REM
cd %Script_Path%
pushd %Log_Path%
dir /b /a-d > %Script_Path%\list.txt
set HH=%TIME:~0,8%
for /F %%A in (%Script_Path%\list.txt) do (
setlocal EnableExtensions EnableDelayedExpansion
set ffname=%%A
set "fname=%%~nA"
set "fext=%%~xA"
ren !ffname! !fname!_%DATE%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%!fext!
endlocal
)
del %Script_Path%\list.txt
move *.* Archive\
popd
exit
现在我的问题是它在我的机器上运行良好,但是当我将其传输到服务器并执行时。这是
抛出“命令的语法不正确。”错误。
它正在移动文件而不重命名。据我所知,文件名和扩展名在下面的部分
中没有正确分配给变量
set ffname=%%A
set "fname=%%~nA"
set "fext=%%~xA"
服务器 OS:Windows 服务器 2008 R2 标准版(SP1)
谁能帮帮我。非常感谢。
这是您应该用来获得一致的日期和时间输出的代码部分:
For /F "Skip=1" %%A In ('WMIC OS GET LocalDateTime') Do For %%B In (%%~nA
) Do Set "DTS=%%B"
Set "DTS=_%DTS:~6,2%-%DTS:~4,2%-%DTS:~,4%_%DTS:~-6%"
Echo( [%DTS%]
Pause
只需将其合并到您的其余代码中……
我正在尝试为不同类型的文件设置管理。 PFB 场景。
我在网络路径中有以下一组文件(\NAS.domain.local\data\Arasan)
- test.sql
- test1.txt
- test2.log
我正在尝试重命名文件,如下所示并将文件移动到 .\Archive\ 目录
- Test_15-12-2016_151428.sql
- Test1_15-12-2016_151428.txt
- Test_15-12-2016_151428.log
([文件名]_DD-MM-YYYY_HHMISS.[ext])
我已经构建了以下批处理脚本。
@echo ON
SET Log_Path=\NAS.domain.local\data\Arasan
SET Script_Path=C:\Scripts
REM ###########################################REM
REM ## Do make any changes to the text below ##REM
REM ###########################################REM
cd %Script_Path%
pushd %Log_Path%
dir /b /a-d > %Script_Path%\list.txt
set HH=%TIME:~0,8%
for /F %%A in (%Script_Path%\list.txt) do (
setlocal EnableExtensions EnableDelayedExpansion
set ffname=%%A
set "fname=%%~nA"
set "fext=%%~xA"
ren !ffname! !fname!_%DATE%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%!fext!
endlocal
)
del %Script_Path%\list.txt
move *.* Archive\
popd
exit
现在我的问题是它在我的机器上运行良好,但是当我将其传输到服务器并执行时。这是 抛出“命令的语法不正确。”错误。 它正在移动文件而不重命名。据我所知,文件名和扩展名在下面的部分
中没有正确分配给变量set ffname=%%A
set "fname=%%~nA"
set "fext=%%~xA"
服务器 OS:Windows 服务器 2008 R2 标准版(SP1)
谁能帮帮我。非常感谢。
这是您应该用来获得一致的日期和时间输出的代码部分:
For /F "Skip=1" %%A In ('WMIC OS GET LocalDateTime') Do For %%B In (%%~nA
) Do Set "DTS=%%B"
Set "DTS=_%DTS:~6,2%-%DTS:~4,2%-%DTS:~,4%_%DTS:~-6%"
Echo( [%DTS%]
Pause
只需将其合并到您的其余代码中……