如何将变量设置为批处理文件在不同目录中的最新文件?

时间:2019-01-16 16:52:05

标签: batch-file

我正在尝试将变量设置为与批处理文件其余部分分开的目录中的最新文件。

我尝试先设置变量位置,然后将其设置为最新位置。我不明白第二行代码:

set DSS_File_Location=N:/HYD/Precip_Grids/

for /f %%x in ('%DSS_File_Location% /od /a-d /b *.dss) do set NEWEST

2 个答案:

答案 0 :(得分:0)

您的代码有几处错误。如果不进行所有这些操作,这就是您想要的吗?如果是这样,请将其与您的代码进行比较以查看差异。在进行FOR循环之前,通常有助于获取您要使用的命令。

set "DSS_File_Location=N:\HYD\Precip_Grids\"
for /f %%x in ('dir "%DSS_File_Location%*.dss" /od /a-d /b') do set "NEWEST=%%x"

答案 1 :(得分:0)

您在这里:

@echo off
set "DSS_File_Location=N:\HYD\Precip_Grids\"
for /f "delims=" %%a in ('dir /b /a-d /od "%DSS_File_Location%*.dss"') do set "latest=%%a"
echo %latest%

工作原理。您使用路径值设置了一个名为DSS_File_Location的变量。

然后,我们使用dir命令,使用裸格式和atribbutes /a-d在每个文件上进行for循环,这意味着它将在dir命令中排除目录,然后按日期时间对它们进行排序(最早的日期)。 dir /b /a-d /od "%DSS_File_Location%*.dss

然后,我们很容易地使用令牌%%a并将其分配给名为latest的变量,然后回显它。

为进一步帮助您,请在您的PC上了解这些命令。打开cmd.exe,然后输入thr:

for /?
set /?
dir /?

仅在我们在本主题中使用的命令上获得帮助。您可以通过在cmd控制台中键入help来查看更多命令,然后使用/?开关简单地运行您发现有趣的每个命令。

一些技巧,您会注意到我在路径中添加了双引号,以确保不会出现空白字符。最后,即使它可以与/一起使用,也最好在路径中使用Windows标准的反斜杠"N:\HYD\Precip_Grids\"