我有一些格式化像日志文件这样"name.log"
复制和重命名创建日期(批处理脚本)文件
我想那些从一个文件夹复制到另一个文件夹一样
xcopy /y "C:\Folder1" "D:\Folder2"
添加我需要使用原始文件的创建日期(无副本文件)重命名文件,以便Folder2中的文本文件将与"yyyymmddhhmm.log"
一样,如果某个文件具有相同的名称(创建日期),它将被覆盖。
我有@Wes Larson帮助的代码,但有一些错误。
set Source=C:\Users\user1\Desktop\1
set Dest=C:\Users\user1\Desktop\2
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)的同一文件夹中,有些文件不会更改名称。例如,如果某些文件已经删除,则会使用旧名称和一个空格来更改名称。命令窗口告诉我它在获取创建日期时没有找到该文件。这很奇怪,因为有些文件复制得很好。
我需要什么来解决这个问题?
这是很难诊断的问题当问题 说法是根本,“它不工作”。请编辑您的 问题,以更全面地描述您的 预期会发生什么,以及与实际的 结果有何不同。请参阅[问]提示什么使得一个好的 解释。 –
你好,我理解你,但问题是我没有结果,所以我敢肯定,我的代码是错误的。当我执行蝙蝠命令窗口打开后关闭,我什么都看不到。 – Eduard
调试的简单方法是暂时删除'@echo off',然后进入'cmd.exe'并调用你的批处理文件。在大多数错误中,'cmd.exe'应该保持打开状态,并且可以让您查看是否出现语法错误或错误的退出位置。 – Bloodied