我的文件夹\文件结构如下:
C:Folder1Folder2CustomerFolderFiles.7z
我已经设置了一个ftp服务器,所以结构很奇怪。 无论如何,在每个客户文件夹中,每个文件夹中大约有 10 个文件。 我想运行一个批处理文件,创建一个文本文件,该文件将进入每个客户文件夹并返回最新的文件日期(不关心名称,需要知道文件是何时创建的)。 文本文件将如下所示:
CustomerFolder1 - 1/1/2014
CustomerFolder2 - 12/3/2013
这是我到目前为止所拥有的,for/f 是我停止的地方:
for /d %%D in ("C:ftplocaluser*") do (
cd /d "%%D"
for /f
我创建了一些代码,但您可能需要在计算机上使用日期/时间格式。您还可以更改显示信息(添加更多回声线)。
@echo off
SetLocal enabledelayedexpansion
set "ftpuserdir=C:ftplocaluser"
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
)
)
)
)
)
如果您对代码有疑问,请告诉我。我知道这很复杂,但我没有设法让它更简单。
@ECHO OFF
SETLOCAL
SET "sourcedir=u:ftplocaluser"
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
。
我还更改了源目录名称以适合我的系统。您需要修复它以适合您的问题。
下面是修改后的代码:
@echo关设置本地启用延迟扩展set "ftpuserdir=C:\csftp\localuser"for/d %%D in (%ftpuserdir%*) do ( 回声。|设置/p some=%%D 集合找到=0 for/f "tokens=" %%a in ('dir/TC/O-D/B/A-D "%%D*" 2^>nul') do ( 如果 !找到!==0 ( for/f "tokens=" %%z in ('dir "%%D\%%a" 2^>nul') do ( 回显 %%z |查找 "%%a">NUL 如果 !错误级别!==0 ( rem echo 最后一个文件=%%z 对于/f "tokens=1,2,3,*" %%s in ('echo %%z') do ( 回显 %%D %%s>>1.txt
)
:: echo.
set found=1
)
)
)
)
)
这是屏幕结果(我还不能发布图片..)C:\csftp\localuser\cs1234C:\csftp\localuser\cs34234C:\csftp\localuser\cs4387
它一直这样下去...
并且文本文件没有列出所有内容,有点跳过.. 在 C:\csftp\localuser 文件夹中,我有很多 100 个子文件夹,我需要这个文件来浏览。