Batch file 如何使用批处理作业添加文件";“创建日期”;进入目录中的所有文件?

Batch file 如何使用批处理作业添加文件";“创建日期”;进入目录中的所有文件?,batch-file,Batch File,我有一个文件夹,它每天都会将一个新文件添加到该文件夹中,该文件夹的文件名相同,但扩展名为.001、.002、.003等。但是,如果该文件夹中没有文件,它将再次从.001开始 问题是它们的名称都是相同的,如果我将它们移动到另一个文件夹进行归档,它只会一次又一次地覆盖同一个文件。我可以每天创建一个包含日期的文件夹,其中只有一个文件,但这似乎有点多余 有没有办法查看每个文件的创建日期并将其重命名为创建日期 我已经做到了这一点,但在这种情况下,我必须使用静态文件名,如何循环遍历整个目录 SET fil

我有一个文件夹,它每天都会将一个新文件添加到该文件夹中,该文件夹的文件名相同,但扩展名为.001、.002、.003等。但是,如果该文件夹中没有文件,它将再次从.001开始

问题是它们的名称都是相同的,如果我将它们移动到另一个文件夹进行归档,它只会一次又一次地覆盖同一个文件。我可以每天创建一个包含日期的文件夹,其中只有一个文件,但这似乎有点多余

有没有办法查看每个文件的创建日期并将其重命名为创建日期

我已经做到了这一点,但在这种情况下,我必须使用静态文件名,如何循环遍历整个目录

 SET filename = C:\test.001
 FOR %%f IN (%filename%) DO SET filedatetime=%%~tf
 rename c:\test.001 C:\test_%filedatetime%.txt
 move C:\*.txt C:\archive\
试着这样做:

SET $path=The_path_who_contain_the_FILES

FOR /F "DELIMS=" %%f IN ('dir "%$path%" /a-d/b') DO (
          SET filedatetime=%%~tf
          move "%%~dpnxf" "C:\archive\test_%filedatetime%.txt")

这提供了正确的排序顺序:

@echo off &setlocal disableDelayedExpansion
set "startfolder=%userprofile%\test"

cd /d "%startfolder%"
for %%a in (*) do (
    for /f "delims=." %%b in ('wmic datafile where "name='%startfolder:\=\\%\\%%~a'" get lastmodified^|find "."') do (
        echo(ren "%startfolder%\%%~a" "%%~b.txt"
    )
)
删除echo以使其正常工作。

@echo关闭
SETLOCAL ENABLEDELAYEDEXPANSION
设置“targetdir=c:\sourcedir”
设置“destdir=c:\destdir”
PUSHD“%targetdir%”
对于(*.*)中的%%a,请执行以下操作(
设置“时间戳=%%~ta”
设置“timestamp=!timestamp://=\!
设置“时间戳=!时间戳::=\!
设置“timestamp=!timestamp:。=!!
设置“时间戳=!时间戳:,=\!
设置“timestamp=!timestamp:=\!
回显移动“%%a”“%destdir%\%%~na.!时间戳!”
)
后藤:EOF
这应该适用于指定目标目录中名称不包括!或^的任何文件

所需的移动命令仅用于测试目的。验证命令是否正确后,将
ECHO MOVE
更改为
MOVE
以实际移动文件。追加
>nul
以抑制报告消息(例如
1个文件已移动

时间戳周围的体操旨在将/:替换为u,因为这些是非法的文件名字符。空格也被替换了,它们是合法的,但通常是痛苦的


如果希望目标文件名为name.003.timestamp,请从目标名称中删除
~na

设置$path=包含文件的路径不按预期工作。您将变量
$path
$path
+空格)设置为
\u包含文件的路径
(空格+
包含\u文件的\u路径\u人员
)。您可以使用双引号避免它:
设置“$path=包含\u文件的\u路径\u人员”"
。由于某些原因,新文件的结尾没有附加日期时间。Endro的解决方案似乎运行良好。您的标题要求
创建日期
,但您的问题要求
修改日期
。您需要什么?如果标题不正确,请编辑标题。
创建日期
修改日期
一个文件可以有两个日期。恩多,你能解释一下你在这里做了什么吗?批处理命令让我很困惑,我还在学习批处理文件的最初阶段。我正在尝试将其修改为filename+YYYYMMDD。