记录具有多个文件夹的最新文件的日期

时间:2014-01-17 17:01:36

标签: file date batch-file logging

我的文件夹\文件结构如下:

C:\Folder1\Folder2\CustomerFolder\Files.7z

我已经设置了一个ftp服务器,所以结构很奇怪。无论如何,在每个客户文件夹中,每个文件大约有10个文件。我想运行一个批处理文件,创建一个文本文件,该文件将进入每个客户文件夹并返回最新的文件日期(不关心名称,需要知道文件何时创建)。文本文件如下所示:

CustomerFolder1 - 1/1/2014
CustomerFolder2 - 12/3/2013

这是我到目前为止,for / f是我停止的地方:

for /d %%D in ("C:\ftp\localuser\*") do (
    cd /d "%%D"
    for /f 

3 个答案:

答案 0 :(得分:1)

我创建了一些代码,但您可能需要在计算机上使用日期/时间格式。您还可以更改显示信息(添加更多回波线)。

@echo off 
SetLocal enabledelayedexpansion 
set "ftpuserdir=C:\ftp\localuser"
for /d %%D in (%ftpuserdir%\*) do (
    echo.|set /p some=%%D
    set found=0
    for /f "tokens=*" %%a in ('dir /TC /O-D /B /A-D "%%D\*" 2^>nul') do (
        if !found!==0 (
            for /f "tokens=*" %%z in ('dir "%%D\%%a" 2^>nul') do (
                echo %%z | find "%%a">nul
                if !errorlevel!==0 (
                    rem echo Last file=%%z
                    for /f "tokens=1,2,3,*" %%s in ('echo %%z') do (
                            echo  - %%s_%%t_%%u
                    )
                    echo.
                    set found=1
                )
            )
        )
    )
)

如果您对代码有疑问,请与我们联系。我知道这很复杂,但我没有设法做得更简单。

答案 1 :(得分:0)

这是修改后的代码:

@echo off SetLocal enabledelayedexpansion 设置“ftpuserdir = C:\ csftp \ localuser” for / d %% D in(%ftpuserdir%*)do(     echo。| set / p some = %% D     set found = 0     for / f“tokens = ”%% a in('dir / TC / O-D / B / A-D“%% D *”2 ^> nul')do(         if!found!== 0(             for / f“tokens = ”%% z in('dir“%% D \ %% a”2 ^> nul')do(                 echo %% z |找到“%% a”> nul                 if!errorlevel!== 0(                     rem echo上一个文件= %% z                     for / f“tokens = 1,2,3,*”%% s in('echo %% z')do(                             echo %% D %% s>> 1.txt

                )
               :: echo.
                set found=1
            )
        )
    )
)

这是屏幕结果(我还不能发布图片..) C:\ csftp \ localuser \ cs1234C:\ csftp \ localuser \ cs34234C:\ csftp \ localuser \ cs4387

它继续这样......

并且文本文件没有列出所有内容,有点跳过..在C:\ csftp \ localuser文件夹中我有100个子文件夹我需要这个文件才能通过。

答案 2 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=u:\ftp\localuser"
SET "spaces=                               "
(
 for /d %%D in ("%sourcedir%\*") do (
  pushd "%%D"
  SET "latest="
  FOR /f "delims=" %%a IN ('dir /b /a-d /o:-d') DO IF NOT DEFINED latest (
   SET latest=Y
   FOR /f "delims=" %%q IN ("%%D") DO SET cdir=%%~nxq%spaces%
   FOR /f "tokens=1" %%t IN ("%%~ta") DO CALL ECHO %%cdir:~0,20%% - %%t
  )
  popd
 )
)>newfile.txt

TYPE newfile.txt

GOTO :EOF

您需要勾选目录名的长度以适合您的最大值和可能的日期 - 如果它显示日期名称,则将tokens=1更改为tokens=2

我还更改了源目录名称以适合我的系统。你需要修复它以适合你的。