2016-05-29 1 views
0

Поэтому в основном, все эти переменные устанавливается на символ плюс (+)
Echo %1,10% %2,10% %3,10% %4,10% %5,10% %6,10% %7,10% %8,10% %9,10% %10,10% Echo %1,9% %2,9% %3,9% %4,9% %5,9% %6,9% %7,9% %8,9% %9,9% %10,9% Echo %1,8% %2,8% %3,8% %4,8% %5,8% %6,8% %7,8% %8,8% %9,8% %10,8% Echo %1,7% %2,7% %3,7% %4,7% %5,7% %6,7% %7,7% %8,7% %9,7% %10,7% Echo %1,6% %2,6% %3,6% %4,6% %5,6% %6,6% %7,6% %8,6% %9,6% %10,6% Echo %1,5% %2,5% %3,5% %4,5% %5,5% %6,5% %7,5% %8,5% %9,5% %10,5% Echo %1,4% %2,4% %3,4% %4,4% %5,4% %6,4% %7,4% %8,4% %9,4% %10,4% Echo %1,3% %2,3% %3,3% %4,3% %5,3% %6,3% %7,3% %8,3% %9,3% %10,3% Echo %1,2% %2,2% %3,2% %4,2% %5,2% %6,2% %7,2% %8,2% %9,2% %10,2% Echo %1,1% %2,1% %3,1% %4,1% %5,1% %6,1% %7,1% %8,1% %9,1% %10,1% У меня возникли проблемы Echoing переменных-Batch

, но по какой-то причине, это выход: ,102,103,104,105,106,107,108,109,1010,10 ,92,93,94,95,96,97,98,99,910,9 ,82,83,84,85,86,87,88,89,810,8 ,72,73,74,75,76,77,78,79,710,7 ,62,63,64,65,66,67,68,69,610,6 ,52,53,54,55,56,57,58,59,510,5 ,42,43,44,45,46,47,48,49,410,4 ,32,33,34,35,36,37,38,39,310,3 ,22,23,24,25,26,27,28,29,210,2 ,12,13,14,15,16,17,18,19,110,1

Мог

кто-нибудь объяснить мне, что происходит, потому что я понятия не (я не сделал проверить с помощью команды набора, что переменные были установлены на символ + и они были)

ответ

3

Avoid starting variable names with a number, это позволит избежать переменная является СУИ интерпретированы как parameter

Read Windows Environment Variables, а также:

переменные имеют знак процента с обеих сторон: %ThisIsAVariable%
Имя переменной может содержать пробелы , знак препинания и смешанный случай: %_Another Ex.ample%
(Это не похоже на Parameter variables , у которого есть только один знак % и всегда один ch aracter долго: %A, %1)

Например, ваша первая строка:

Echo %1,10% %2,10% %3,10% %4,10% %5,10% %6,10% %7,10% %8,10% %9,10% %10,10% 
rem  ↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑ ↑↑↑ 
rem  % % = invalid variable name 
rem    nonexistent variables are evaluated to an empty string in batch script 
rem ↑↑ 
rem %1 = the 1st command line parameter supplied to a batch script 
rem  evaluates to an empty string if no parameter is supplied 
rem         an isolated % percent sign is ignored ↑ 

вычисляет ,102,103,104,105,106,107,108,109,1010,10

Требуется чтение (весь поток): How does the Windows Command Interpreter (CMD.EXE) parse scripts?

1

JosefZ сделал хорошая работа, объясняющая, что происходит в his answer.

У меня есть еще несколько пунктов, чтобы лучше понять ваше понимание.

Параметры партии, такие как %1, доступны только в пакетных сценариях. Командная строка имеет немного отличающийся синтаксический анализатор, который ничего не знает о параметрах партии. Таким образом, ваш код будет работать так, как вы планировали, если вы вводите команды непосредственно в командной строке.

Вы можете получить свой код, чтобы работать, как первоначально предполагалось в рамках пакетного сценария, если вы включите замедленное расширение:

@echo off 
setlocal enableDelayedExpansion 
Echo !1,10! !2,10! !3,10! !4,10! !5,10! !6,10! !7,10! !8,10! !9,10! !10,10! 
Echo !1,9! !2,9! !3,9! !4,9! !5,9! !6,9! !7,9! !8,9! !9,9! !10,9! 
Echo !1,8! !2,8! !3,8! !4,8! !5,8! !6,8! !7,8! !8,8! !9,8! !10,8! 
Echo !1,7! !2,7! !3,7! !4,7! !5,7! !6,7! !7,7! !8,7! !9,7! !10,7! 
Echo !1,6! !2,6! !3,6! !4,6! !5,6! !6,6! !7,6! !8,6! !9,6! !10,6! 
Echo !1,5! !2,5! !3,5! !4,5! !5,5! !6,5! !7,5! !8,5! !9,5! !10,5! 
Echo !1,4! !2,4! !3,4! !4,4! !5,4! !6,4! !7,4! !8,4! !9,4! !10,4! 
Echo !1,3! !2,3! !3,3! !4,3! !5,3! !6,3! !7,3! !8,3! !9,3! !10,3! 
Echo !1,2! !2,2! !3,2! !4,2! !5,2! !6,2! !7,2! !8,2! !9,2! !10,2! 
Echo !1,1! !2,1! !3,1! !4,1! !5,1! !6,1! !7,1! !8,1! !9,1! !10,1! 

Но ... даже если вы можете технически использовать имена переменных, которые начинаются с цифры, я настоятельно рекомендую, чтобы вы не должны этого делать.

 Смежные вопросы

  • Нет связанных вопросов^_^