副本&将文件重命名为其他文件夹

时间:2016-04-13 17:02:09

标签: batch-file cmd

我有一些格式化为"name.log"

的日志文件

我想将这些文件从一个文件夹复制到另一个文件夹,如

xcopy  /y  "C:\Folder1" "D:\Folder2"

我需要使用创建的原始文件日期(无复​​制文件)重命名文件,以便Folder2中的文本文件类似于"name yyyymmddhhmm.log",如果某个文件具有相同的名称(创建日期),它将是覆盖。

代码:

set Source=C:\Users\user1\Desktop\Folder1
set Dest=D:\Folder2
if not exist %Dest% md %Dest%
for /F %%a in ('dir /b "%Source%\*.txt"') do call :Sub %%a
goto :eof

:Sub
set "filename=%1"
for /F %%s in ("%Source%\%1") do  if %%~zs==0 goto :eof
set "datepart="
FOR /F "tokens=1-5 delims=/-: " %%a IN ('dir /tc "%filename%" ^| findstr "%filename%"') DO (
    IF "%%c" neq "" SET "datepart=%%c%%a%%b%%d%%e"
)
FOR /F %%a IN ("%filename%") DO (
    set "NewName=%%~na %datepart%%%~xa"
)
xcopy /y "%Source%\%filename%" "%Dest%\%NewName%*"
GOTO :EOF

问题是,如果我没有将.bat放在与原始文件(Folder1)相同的文件夹中,则文件不会更改名称。例如,如果它已用完,则文件将使用旧名称和一个空格更改名称。

命令窗口告诉我它在获取创建日期时找不到该文件。

如果我将脚本放入folder1就可以了。

另一方面,如果我用“任务计划程序”执行脚本,我有同样的问题。文件已复制,但没有创建日期。

我需要什么来解决这个问题?

0 个答案:

没有答案