Зачем вам нужно менять вещи в пакетном файле по сравнению с командной строкой? [Дубликат]

RDD распределен, это означает, что он разделен на некоторое количество частей. Каждый из этих разделов потенциально находится на разных машинах. Разделитель хэшей с помощью arument numPartitions выбирает, на каком разделе помещать пар (key, value) следующим образом:

  1. Создает точно numPartitions разделы.
  2. Места (key, value) в раздел с номером Hash(key) % numPartitions
58
задан Tyler 24 January 2013 в 21:57
поделиться

2 ответа

(Подробное описание в можно найти в архивной статье Microsoft KB .)

Три вещи, которые нужно знать:

  1. Знак процента используется в пакетных файлах для представления параметров командной строки: %1, %2, ...
  2. Знаки с двумя процентами с любыми символами между ними интерпретируются как переменная: echo %myvar%
  3. Знаки с двумя процентами без ничего между ними (в пакетном файле) обрабатываются как один знак процента в команде (а не пакетный файл): %%f

Почему это?

Например, если мы выполним вашу (упрощенную) командную строку

FOR /f %f in ('dir /b .') DO somecommand %f

в командный файл, правило 2 попытается интерпретировать

%f in ('dir /b .') DO somecommand %

как переменную. Чтобы этого избежать, вы должны применить правило 3 и выйти из % со второй %:

FOR /f %%f in ('dir /b .') DO somecommand %%f
97
ответ дан marapet 26 August 2018 в 11:53
поделиться

В DOS вы не могли использовать переменные среды в командной строке, только в пакетных файлах, где они использовали знак % в качестве разделителя. Если вам нужен литеральный знак % в пакетном файле, например. в echo, вам нужно было удвоить его.

Это перенесено в Windows NT, которое разрешало переменные среды в командной строке, однако для обратной совместимости вам все равно нужно удвоить знаки % в файл .cmd.

10
ответ дан Neil 26 August 2018 в 11:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: