使用批处理脚本附加带文件名的日期

时间:2017-07-20 10:09:21

标签: batch-file batch-rename

我正在尝试为不同类型的文件设置内务处理。 PFB情景。

我在网络路径中有以下文件集( \ NAS.domain.local \ data \ Arasan

  • test.sql
  • test1.txt
  • test2.log

我正在尝试重命名文件,如下所示,并将文件移动到。\ Archive \ directory

  • 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"

服务器操作系统:Windows Server 2008 R2标准版(SP1)

任何人都可以帮助我。非常感谢。

1 个答案:

答案 0 :(得分:0)

以下是您应该使用的代码部分,以获得一致的日期和时间输出:

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

只需将其合并到代码的其余部分......