2014-01-17 110 views
0

我的文件夾\文件結構如下:日誌日期

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 
+0

請把你的根文件夾結構。 –

+0

C:\ ftp \ localuser \ customer1 –

回答

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 

你需要癢癢目錄名的長度,以滿足您最大的和可能的日期 - 如果它顯示DAYNAME,然後更改tokens=1tokens=2

我也改變了源目錄名稱以適應我的系統。你需要解決這個問題以適應你的需求。

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 
       ) 
      ) 
     ) 
    ) 
) 

如果您對代碼有任何疑問,請讓我知道。我知道這很複雜,但我沒有設法做得更簡單。

+0

真棒..在結果行上做了一點調整,但完美..謝謝! –

0

這裏是修改後的代碼:

@迴響 SETLOCAL enabledelayedexpansion 組 「ftpuserdir = C:\ csftp \ localuser」 爲/ d %% d在(%ftpuserdir%*)DO( 回波。'set/p some = %% D set found = 0 for/f「tokens = 」%% a in('dir/TC/OD/B/AD「%% 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 last file = %% z for/f「tokens = 1,2,3,*」%% s in('echo %% z')do( echo %% D %% s >> 1。 TXT

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

這裏是屏幕結果(我不能發佈一個PIC還..) C:\ csftp \ localuser \ cs1234C:\ csftp \ localuser \ cs34234C:\ csftp \ localuser \ cs4387

它一直會這樣的...

和文本文件不立st一切,有點跳過..在C:\ csftp \ localuser文件夾我有很多100個子文件夾,我需要這個文件去通過。