6

Кажется, что либо тире - или косая черта / будут одинаково хорошо работать в командном файле. Два приведенных ниже примера одинаково действительны. Что правильно? Это зависит от операционной системы? Если да, то как мне определить, какой использовать?

 shutdown -r -m \\server04 -t 01 -f 
 shutdown /r /m \\server04 /t 01 /f 

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

Я нашел этот связанный вопрос на SO, который на самом деле не дает ответа, когда использовать один или другой. Вопрос там получил много негатива из-за того, что не был суперпользователем. Большинство мнений предполагало, что они использовали тире, но не было дано разумного обоснования для использования одного над другим.

3 ответа3

18

Официально / традиционно в DOS / Windows переключатель командной строки обозначается косой чертой (/).

Официально / традиционно практически во всех других ОС (например: * nix flavors) используется тире (-).

Это одно из фундаментальных различий между способом разработки и использования ОС.

Другой (связанный), например, как указывает в своем комментарии Даниэль Б., косая черта в * nix предназначена для разделителей пути к файлу, где, поскольку DOS/Windows использует обратную косую черту, - еще одно фундаментальное отличие, которое позволяет MS (продолжать ) используйте косую черту в качестве символа переключения.

Но на самом деле программист должен реализовать то, что они выбирают, и программисты приложений для DOS/Windows (включая тех, кто работает в MS) часто включают возможность использовать любой из них, для простоты использования людьми из других систем, и я Конечно, часто из-за личных предпочтений.

Программисты за пределами MS иногда вообще не допускают использование прямой косой черты.

Хорошая реклама

Сегодня это сложно представить, но оригинальная версия Microsoft DOS - MS-DOS 1.0 - вообще не поддерживала каталоги, когда она была выпущена в 1981 году. Большинство утилит, включенных в DOS, были написаны IBM, и они использовали символ / в качестве символа «switch»

...

Различные типы слешей здесь указывают, указываете ли вы параметр или путь к каталогу.

Источник Blurb: Почему Windows использует обратную косую черту, а все остальное использует прямую косую черту

0

В окнах нет команд, использующих только тире. Даже arp может использовать косую черту.

Команды, которые могут использовать тире, основаны на * nix командах, например, arp или shutdown.

При выключении справка cmd зависит от версии windows! В ХР cmd help показывает выключение -? В Win7 это показывает выключение /?. Веб-справка MS показывает это с чертой. Но любая версия Windows принимает либо.

С помощью arp, справка cmd в XP и 7, а также веб-справка, покажите ее с дефисом. Но они могут принять косую черту.

Я не думаю, что MS когда-либо переписывала команду, которая брала черты, чтобы принять только косую черту. И идея, которую вы упоминаете в комментариях, заключается в том, что вы беспокоитесь, что одна реализация может отличаться от другой в использовании - против / я так не думаю. Вам будет трудно найти какой-либо пример этого, я сомневаюсь, что это когда-либо случалось. Microsoft просто не делает этого!

Если тире работает в одной версии Windows для команды, я был бы удивлен, если бы она не работала в другой (для этой команды). Если вы когда-либо слышали об этом, например, видите пример, вы можете начать с того, как узнать, какой из них использовать для совместимости между версиями Windows. Хотя даже тогда вы могли бы пойти с косой чертой, потому что все они, кажется, принимают это.

0

Вы должны использовать / для Windows и - для Unix-подобных. И не забывайте, что параметры одних и тех же команд могут и будут различаться в Windows и Unix-подобных системах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .