【问题标题】:log dates of most recent file with multiple folders使用多个文件夹记录最近文件的日期
【发布时间】:2014-01-17 17:01:35
【问题描述】:

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

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 

【问题讨论】:

  • 请把你的根文件夹结构。
  • C:\ftp\localuser\customer1

标签: file date batch-file logging


【解决方案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
                )
            )
        )
    )
)

如果您对代码有任何疑问,请告诉我。我知道这很复杂,但我没有设法让它变得更简单。

【讨论】:

    【解决方案2】:
    @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

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

    【讨论】:

      【解决方案3】:

      这里是修改后的代码:

      @echo 关闭 SetLocal enabledelayedexpansion 设置“ftpuserdir=C:\csftp\localuser” 对于 /d %%D in (%ftpuserdir%*) 做 ( echo.|set /p some=%%D 设置找到=0 for /f "tokens=" %%a in ('dir /TC /O-D /B /A-D "%%D*" 2^>nul') 做 ( 如果 !found!==0 ( for /f "tokens=" %%z in ('dir "%%D\%%a" 2^>nul') 做 ( 回声 %%z |找到“%%a”>nul 如果 !errorlevel!==0 ( rem echo 最后一个文件=%%z for /f "tokens=1,2,3,*" %%s in ('echo %%z') 做 ( echo %%D %%s>>1.txt

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

      )

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

      一直这样……

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

      【讨论】:

        猜你喜欢
        • 2017-11-18
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        相关资源
        最近更新 更多