0

我必须在目录中找到最新的文件。我使用了下面的代码,它适用于最近的文件,但我的问题是生成了两个具有相同时间戳的文件,例如

  1. s_dss_000GJ00I0000000000IW_9_error.csv
  2. s_dss_000GJ00I0000000000IW_8_1_2013_14_10_standard_error.csv

我的代码是:

for /f "delims=" %%x in ('dir /od /a-d /b %1') do set recent=%%x

在这里,我传递 %1% 参数s_dss_000GJ00I0000000000IW_9*.csv来查找最新文件。此代码返回最新的文件, s_dss_000GJ00I0000000000IW_8_1_2013_14_10_standard_error.csv但我希望最新的文件是s_dss_000GJ00I0000000000IW_9_error.csv.

你能帮我解决这个问题吗?

4

2 回答 2

0

我创建了下面的批处理脚本来解决我的问题。唯一的问题是复制命令。

我想复制不同名称的文件名。那是行不通的。例如 s_dss_000GJ00I0000000000IW.csv 需要复制为 AAA.csv。

@ECHO OFF
setlocal EnableDelayedExpansion
set j=0
SET logdirectory=C:\batchfiles\error
SET logdirectoryBackup=C:\batchfiles\error_processing\
cd "%logdirectory%

FOR /f "delims=" %%i IN ('dir /b /a-d /o-d s_dss_000GJ00I0000000000IW*.csv') DO (
set /A j=j+1
echo !j!

set tst=%%i
set tst=!tst:standard=!
if not !tst!==%%i ( 
echo %%i contains standard
) else (

echo f|xcopy %%i "%logdirectoryBackup%"AAA.csv /Y
echo %%i not contains standard

)
if !j! geq 2 (

    goto :end
)

)
:end
pause
于 2013-08-06T05:38:38.663 回答
0

不确定你的问题中的一些事情。如果你想要的文件名中有一个已知的短语,你可以用 find 过滤它,如下所示:

for /f "delims=" %%x in ('dir /od /a-d /b ^| find /i "_9_error"') do set recent=%%x

注意 ^ 以允许使用管道。

如果文件具有已知内容,您可以类似地使用 find 确定使用哪一个。如果文件名和内容都没有要过滤的内容,并且时间戳相同,那么您就被卡住了。

于 2013-08-03T09:51:47.317 回答