Как установить переменную для самого последнего файла в другом каталоге для пакетного файла? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь установить переменную для самого последнего файла в отдельном каталоге от остальной части пакетного файла.

Я попытался сначала установить переменную, а затем установить ее как самую новую. Я не понимаю вторую строку кода:

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 голосов
/ 16 января 2019

Вот, пожалуйста:

@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 со значением вашего пути.

Затем мы выполняем цикл for для каждого файла, используя команду dir, используя пустой формат и используя atribbutes /a-d, что означает, что он исключит каталоги в команде dir, а затем отсортирует их по дате и времени как более старшие. dir /b /a-d /od "%DSS_File_Location%*.dss

Затем мы с легкостью используем токен %%a и присваиваем его переменной с именем latest, и мы повторяем его.

Чтобы помочь вам немного больше, узнайте об этих командах на вашем ПК. Откройте cmd.exe и введите следующее:

for /?
set /?
dir /?

, чтобы получить некоторую помощь, только для команд, которые мы использовали в этой теме. Вы можете увидеть больше команд, набрав help в консоли cmd, а затем просто запустив каждую интересующую вас команду с помощью переключателя /?.

Некоторые советы, вы заметите, что я добавил к пути двойные кавычки, которые не будут допускать появления пробелов. Наконец, даже при том, что он будет работать с /, лучше всего использовать стандартную обратную косую черту Windows в пути "N:\HYD\Precip_Grids\"

0 голосов
/ 16 января 2019

В вашем коде есть несколько ошибок. Не вдаваясь во все это, это то, что вы хотите? Если это так, сравните его с вашим кодом, чтобы увидеть различия. Это часто помогает заставить команды, которые вы пытаетесь использовать, работать перед циклом 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...