Відповіді:
Це цікаве рішення, якого я ніколи раніше не бачив. Дозвольте спробувати пояснити:
echo %path%. Це буде друкувати всі каталоги на одному рядку, розділеному крапкою з комою ( ;)%path:a=b%яка замінить усі aсимволиbecho. використовується для друку нового рядка&використовується для розділення команд, наприклад, echo line1&echo line2буде надруковано два рядки;нічим, а потім надрукувати новий рядок». Я не можу знайти жодної документації з цього приводу, тому це лише моя інтерпретація. Чесно кажучи, я навіть не знав, що це можливо, але ви йдете. ОНОВЛЕННЯ Моя інтерпретація цього кроку, здається, відключена, і краще пояснюється wizzwizz4 .echo path? використовуються %% для змінних?
set greeting=Helloі потім echo %greeting%. Конфузно, PATHтрапляється, як команда, так і змінна, тому введення команди pathабо echo %path%матиме однаковий результат.
$PATHНаприклад , використовуються інші мови, наприклад, bash .
echo.не є "командою для друку нового рядка". Це інтерпретатор команд Microsoft для Windows NT cmd; і команда echo.просто - друкувати елемент шляху, гарантуючи, що якщо елемент шляху порожній, він не перейде на інший функціоналecho . Першим echoсправді має бути echo.теж.
Для цього використовується підміна змінної командного рядка. %path:;=&echo.%означає " %path%, але замініть всі ;s на &echo.". Це означає, що set path=C:\Windows\System32;C:\Windows\;;C:\Python37;:
echo %path:;=&echo.%
стає:
echo C:\Windows\System32&echo.C:\Windows\&echo.&echo.C:\Python37&echo.
Оскільки &це роздільник команд, це еквівалентно:
echo C:\Windows\System32
echo.C:\Windows\
echo.
echo.C:\Python37
echo.
Завдяки химерності DOS Batch, echo.ідентичний, за echo винятком випадків, коли після цього нічого немає. Якщо це так, він просто нічого не друкує, замість того, щоб сказати вам ECHO, увімкнено чи вимкнено. Це зробить вихід:
C:\Users\wizzwizz4> echo %path:;&echo.%
C:\Windows\System32
C:\Windows\
C:\Python37
C:\Users\wizzwizz4>
Дійсно, слід echo.%path:;=&echo.%враховувати випадок, коли %PATH%починається з а ;, але ця команда все-таки досить розумна.
Потрапляючи в детальні деталі, насправді echo( слід використовувати замість цього echo.. Це тому, що echo.можуть виникнути проблеми, коли у вас є названий файл echo, і повільно, оскільки він повинен перевіряти диск ( %CD%і я думаю, що все %PATH%) кожен раз, коли він працює. (У мене немає копії Windows, тому я не можу перевірити її самостійно; %CD%чи впливає %PATH%наявність echoфайлу просто чи десь там echo., і що це робить?)
echo), але я не дуже пам’ятаю. ;-(
echo.це той, про який люди циркулювали найбільше років тому. Саме той у багатьох книгах. Ефективність - це не проблема. Дурне поведінка, коли трапляються різні файли, є. Коли я написав 32-бітну заміну для 16-бітового cmdв OS / 2, зламання імен команд у цих пунктуаційних символах, і ця вкрай нерегулярна поведінка розбору є однією з речей, які я навмисно не дублював, і які я ставив на документально перелік відмінностей. echodotНатомість я зробив зовнішню команду, яку можна псевдонімом echo.за бажанням.
echo(це єдина безпечна версія.
echo.може не працювати .