Назад | Перейти на главную страницу

Безопасно ли писать командные файлы с окончанием строки Unix?

Я думаю, что столкнулся с ошибкой в ​​командном файле, потому что он был написан с окончанием строки unix. Это известная проблема с запуском командных файлов cmd.exe в Windows?

На самом деле это не «ошибка» ... так как это задумано. Новые строки Windows определяются как "\ r \ n" ... или комбинация "возврата каретки" и "новой строки" ... тогда как разновидности * nix предпочитают опускать возврат каретки. Вы всегда должны использовать "\ r \ n" в любом месте Windows, где это возможно. Все остальное может быть неправильно истолковано ... и привести к множеству неожиданных результатов.

Это кажется эта партия этикетки пропускаются, когда LF (Окончание строки Unix) используется в .bat файл.

Для пакетных файлов, похоже, нет разницы между окончанием строки unix и окончанием строки Windows.

goto, call или даже создание переменных перевода строки работает с обоими стилями.

А поскольку пакетный синтаксический анализатор удаляет символы возврата каретки сразу после фазы процентного расширения, они никогда не будут играть большой роли.

Ответ таков: вам может «повезти», и он будет работать с LF, но не рассчитывайте на это. У нас была та же проблема, что и у исходного отправителя. Наш процесс закончился бы файлами bat, которые были только LF, и (извините, не удалось найти шаблон) иногда метка была бы «не найдена», хотя явно она там была. Придется преобразовать в CR-LF или внести случайные изменения, пока он не заработает!