我有一些格式化为"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就可以了。
另一方面,如果我用“任务计划程序”执行脚本,我有同样的问题。文件已复制,但没有创建日期。
我需要什么来解决这个问题?