Пакетный сценарий Windows .BAT для цикла - PullRequest
0 голосов
/ 21 сентября 2018

Мне трудно понять, что делает приведенный ниже код.

for /f "delims=:. tokens=1-4" %%t in ("%TIME: =0%") do (
        set FILENAME=event-%5-%%t%%u%%v%%w
    )

Я знаю, что это for loop.

/f => Я предполагаю, что это означает для каждого файла в каталоге.

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

tokens=1-4 => Кажется, это захватывает первые четыре файла в каталоге

%%t => Не уверен, что это означает

("%TIME: =0%") => Понятия не имею, что это значит

Таким образом, для каждого файла, соответствующего вышеуказанным критериям, он делает следующее:

set FILENAME=event-%5-%%t%%u%%v%%w => Что, я предполагаю, означает переименование каждого файла.

То, что я тоже не понимаю, это:

event-% 5 - %% t %% u %% v %% w => Я знаю, что "событие" является частью имени.Но что значит %5-%%t%%u%%v%%w? 1032 *

1 Ответ

0 голосов
/ 21 сентября 2018

Я знаю, что это цикл. правильно

/ f => Я предполагаю, что это означает для каждого файла в каталоге. Не совсем./f является своего рода «многоцелевым коммутатором» - подробности см. for /?

delims = :.=> Я понимаю, это означает использование: в качестве разделителя.Не уверен, что.средства. определяет как :, так и . как разделители - строка будет разделена на каждый из этих символов

tokens = 1-4 => Кажется, это захватывает первые четырефайлы в каталоге нет, он захватывает первые четыре токена строки (разделенных определенными разделителями)

Цикл for /f разбивает его на четыре токена: %%t сначала, затем вниз по алфавиту: %%u, %%v и %%w

%% t => Не уверен, что это значит это имя переменной для(первый) токен

("% TIME: = 0%") => Понятия не имею, что это значит он заменяет каждый пробел в строке на ноль - подробности см. set /?

Таким образом, для каждого файла, соответствующего вышеуказанным критериям, он делает следующее: здесь не имеет ничего общего с файлами

set FILENAME = event-% 5 - %%t %% u %% v %% w => Что, я предполагаю, означает переименование каждого файла. нет, он создает переменную с именем filename путем объединения нескольких строк

Что он действительно делает:

%time% является внутренней переменнойи содержит текущее время.(Внимание, формат времени зависит от локальных настроек - фрагмент кода принимает формат 9:11:22.33 (перед 9 стоит пробел).
%time: =0% заменяет пробел, в результате чего 09:11:22.33,

Цикл for /f разбивает эту строку на четыре токена (%%t = 09, %%u = 11, %%v = 22 и %%w = 33.

%5 является пятым параметром командного файла (предположим, это whatever)

set FILENAME=event-%5-%%t%%u%%v%%w устанавливает переменную filename равной event-whatever-09112233

Я рекомендую ставить в закладки SS64 и регулярно посещать ее. Вы также можете получить справку по каждой команде, выполнив ее с помощью переключателя /? (for /?, set /? и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...