2010-04-03 23 views
8

Câu hỏiLý do sử dụng chương trình hàng loạt dos trong Windows là gì?

Điều gì sẽ là tốt (lý tưởng, kỹ thuật) lý do gì để bao giờ chương trình một số nhiệm vụ không tầm thường trong ngôn ngữ dos batch trên một hệ thống Windows hiện đại như trái ngược với tải hoặc PowerShell hoặc ActiveState Perl?

Để cụ thể hơn, tôi làm cho hai giả định sau đây trong suốt thời gian của câu hỏi này:

  • ai đủ kỹ thuật để có thể viết một kịch bản vừa phức tạp batch là đủ kỹ thuật để cài đặt một trong hai các phiên dịch kịch bản.

  • Hai trong số đó không có đủ đường cong học tập cho các nhiệm vụ thay thế hàng loạt cơ bản cho biết đường cong sẽ lớn hơn nỗi đau khi thực hiện bất kỳ nhiệm vụ từ xa nào không tầm thường.

Ghi chú

  • "Bạn cần một chương trình batch cho autoexec.bat" không phải là một lý do chính đáng. Autoexec.bat của bạn có thể bao gồm chỉ đơn giản là gọi kịch bản không theo lô.

  • Nếu bạn không đồng ý với một trong hai giả định của tôi ở trên, điều đó là tốt và có thể tôi đã sai. Nhưng câu hỏi của tôi cụ thể là "giả định 2 giả định đó là chính xác, lý do gì để vẫn gắn bó với hàng loạt?" Nếu nó làm cho nó dễ dàng hơn để đình chỉ sự hoài nghi (trong trường hợp bạn không đồng ý với tôi), hãy thêm vào giả định thứ ba rằng câu hỏi được giới hạn cho những người đã có ít nhất một số modicum của PowerShell hoặc Perl kinh nghiệm.

    Để lặp lại - đây không phải là câu hỏi chủ quan về việc học PSh hoặc ASPerl dễ dàng như thế nào so với thực hiện mã hóa hàng loạt nâng cao. Đó là một câu hỏi riêng biệt quá chủ quan để bị làm phiền trong bài đăng này.

nền:

tôi sử dụng để làm một số chương trình batch khá phức tạp trở lại trong những ngày trai, và nhớ hàng loạt là một trong những ngôn ngữ lập trình có thể tồi tệ nhất tôi đã gặp phải. Ý tưởng cho câu hỏi này đến sau khi nhìn thấy một loạt các câu hỏi hàng loạt trên SO, và cố gắng để grok câu trả lời của một trong số họ ra khỏi tò mò tuyệt đối và bỏ trong đau sau một phút, kêu lên tinh thần "tại sao bất cứ ai đi qua cơn đau này thay vì làm điều đó trong 1 dòng Perl? " :)

câu trả lời chính đáng của riêng tôi

tôi giả sử có thể có một hệ thống DOS tương thích với khả năng, trong đó có hệ điều hành DOS phiên dịch nhưng không có PowerShell hoặc Perl tương thích ... Tôi không biết của ai nhưng không hoàn toàn không thể.

+1

Lưu ý rằng hệ điều hành DOS (command.com) và Windows (cmd.exe) shell dòng lệnh là hai * rất * thế giới khác nhau. Đối với tất cả các mục đích thực tế, cả hai chỉ chia sẻ một chút cú pháp nhưng không có gì khác. 'autoexec.bat' cũng không tồn tại trong một thời gian nữa. Trừ khi bạn vẫn xảy ra để chạy DOS hoặc Windows 9x. – Joey

+0

@Johannes - Hmmm ... Tôi vẫn thấy autoexec.bat trong tất cả các cài đặt XP của mình, mặc dù tôi không bao giờ cần phải đặt bất cứ thứ gì ở đó để không biết nếu nó hoạt động :) – DVK

+0

Nó có cho các ứng dụng cổ đại mong đợi nó ở đó . Tương tự với config.sys. Thường thì chúng trống rỗng. Windows thực hiện một số phép thuật với các biến môi trường được đặt trong 'autoexec.bat' và đặt chúng trong Windows (thiết lập chương trình DOS thường xuyên đặt' PATH' hoặc các biến khác để chúng có thể hoạt động đúng). Bên cạnh đó những tập tin đó không còn sử dụng nữa và đó chỉ là một chút tương thích ngược. – Joey

Trả lời

13

Thông thường, lý do là bạn cần tập lệnh chạy trên máy không có trình thông dịch viên khác và bạn không được phép cài đặt thông dịch viên. Các máy chủ sản xuất ở nhiều công ty là một ví dụ tốt - bạn muốn chúng có ít nhất các vectơ khai thác nhất có thể, có nghĩa là không có ngôn ngữ kịch bản nào không cần thiết cho chức năng ứng dụng.

Bạn nói đúng khi bạn nói rằng ngôn ngữ lô là một ngôn ngữ khủng khiếp - có lý do khiến chúng mất thời gian và tiền bạc để xây dựng PowerShell - nhưng nó cũng là ngôn ngữ phổ quát duy nhất bạn có thể dựa trên vô số các phiên bản của Windows.

+2

Hmm ... đoán Tôi không được sử dụng để nắm bắt "sản xuất" và "Windows" trong cùng một tình cảm, có tất cả cuộc sống của tôi tồn tại trong thế giới Unix/Linux như xa như sản xuất đi, thậm chí không nghĩ về điều đó. +1 – DVK

+4

Thật đáng ngạc nhiên, có những công ty thực tế sử dụng Windows làm nền tảng máy chủ. Đôi khi nó thậm chí hoạt động. –

+0

Heck, công ty chúng tôi làm. Tôi chỉ có tài sản tốt (tôi giả định) để không bao giờ chạm vào mặt đó của Lực lượng tại nơi làm việc. Gần nhất tôi đến là một quản trị viên NETWARE trở lại trong những ngày đại học :) – DVK

9

Vì tôi làm việc tại ngân hàng có trình duyệt mặc định là IE6 trên Windows XP và tôi không biết có thể cài đặt PowerShell trên máy tính của ai đó không và tôi có tệp hàng loạt để họ có thể sử dụng nhanh chóng và dễ dàng :

sqlcmd with some pre-import SQL 
bcp 
sqlcmd with some post-import SQL 

Với toàn bộ lô cần phải là RUNAS/NETONLY vì máy trạm không tham gia vào miền mà máy chủ SQL bật/tin cậy.

Không phải là tôi đang phàn nàn hay bất cứ điều gì ...

Và tôi sẽ nói rằng họ đều là phòng không tầm thường bởi vì đôi khi họ mất các thông số và họ yêu cầu một số thoát khá điên trích dẫn.

5

Tôi có hợp đồng tại một công ty tiện ích lớn hoàn toàn không cho phép các chương trình không được chấp thuận trên máy tính của họ. Điều đó sẽ được kỳ vọng là các máy tính gắn liền với các mạng trong cùng kết nối giữa các máy tính và thiết bị điều khiển, nhưng lệnh cấm cũng áp dụng cho các mục đích chung và các mạng quản trị.

Hệ điều hành được phê duyệt là Windows XP SP3 với IE6. Nâng cấp không được phép cho đến khi hỗ trợ kỹ thuật ban phước cho nó. Mà, có vẻ như, vẫn có thể là một vài năm kể từ bây giờ.

Do đó, tệp lô là công cụ tạo tập lệnh chung duy nhất có sẵn. Một số máy phát triển có quyền truy cập vào trình biên dịch C++, nhưng các chương trình kết quả không được phép phân phối nội bộ cho đến khi kết thúc nỗ lực xác thực (có thể xảy ra nhiều năm).

+3

Vì vậy, chúng cho phép các tập lệnh batch không được chấp nhận nhưng không cho phép mã C++ không được hỗ trợ với chức năng giống hệt nhau? Buồn nhưng không đáng ngạc nhiên :) – DVK

+1

Shhhh! Tôi sẽ không ngạc nhiên chút nào nếu họ thêm lệnh cấm * các tập tin batch không được chấp thuận * — nếu họ đã nhận thức được chúng. – wallyk

+0

bạn làm cho nó âm thanh như vậy sẽ là một điều BAD? Lần sau điện của bạn tắt trong một ngày vì một số người dùng Yahoo đã chạy mã không được kiểm tra trên mạng của công ty điện lực, tôi chắc chắn bạn sẽ muốn tồi tệ hơn họ chỉ đơn thuần là buộc mã của họ trải qua quá trình xem xét mã từ lúc đó ... – DVK

2

Bạn cũng có thể chọn sử dụng vbscript hoặc jscript chứ không phải là perl và bạn sẽ không cần phải lo lắng về việc cài đặt bất kỳ phần mềm bổ sung nào.

+0

Thực hiện điều đó với JScript. – Axeman

+3

Mặc dù vậy, Windows Script Host có thể bị vô hiệu hóa với chính sách nhóm. – Joey

0

nhiều lý do

  1. chính sách công ty của nó, có thể là đối với an ninh hoặc vì lý do vô lý khác do quản lý, rằng bạn nghiêm sử dụng hệ điều hành DOS.
  2. Bạn phải hỗ trợ một số tập lệnh DOS cũ đã được viết.
  3. Bạn hoặc quản trị viên trong công ty chỉ biết DOS và không có khả năng để tìm hiểu các ngôn ngữ khác.
  4. Bạn đang mã hóa cho một phần của chương trình lớn hơn DOS đã được viết
  5. Làm những việc "khó khăn" khiến bạn trông mát mẻ.
  6. Bạn có rất nhiều thời gian trên tay để đưa ra cách giải quyết đối với một số điều mà khó có thể làm dễ dàng với hệ điều hành DOS
+3

Tôi nghi ngờ rằng DOS là một vấn đề ở bất cứ nơi nào hiện tại. Chúng tôi đã qua thời gian đó trong hơn một thập kỷ và thậm chí nó không còn tồn tại trên Windows 64 bit nữa. – Joey

Các vấn đề liên quan