The batch job is probably one of the oldest methods in computer resource utilization and management. Quite simply, a user collects some amount of data, usually in the form of files, and prepares a batch job to deal with all of those files through a particular computer program or set of programs all at once. Contrary to an interactive computer session, where the user is actively issuing commands to and receiving input requests from the computer, the batch job comprises all of the work that the user wanted to do to those files and data in a single operation.
In the very early days of computing, huge mainframe computers were expensive to own and operate. As a result, the batch job was devised as a way for users to submit work for the computer to process that could allocate the system's computing power and resources evenly throughout the day. Eventually, as mainframes took on remote users via terminals, the regular work day involved more interactive sessions that kept the mainframe busy. Batch jobs were then scheduled into queues for operating at night. This way, the cost of these expensive computing systems was better justified.
As the information technology industry continued to flourish and computers spread to the desktop, the batch job continued to remain a staple of computer use, though many batch jobs are invisible to most typical desktop computer users. Some of the most common batch jobs that may be overlooked are simple processes that happen every day behind the scenes. Printing a series of files is a form of a batch job where the documents are sent to a printer and scheduled for output. Another typical batch job is the cleanup of the temporary files that are accumulated through the use of various computer programs throughout the day.
Other types of batch jobs exist that are capable of processing multiple files according to user-defined specifications. Image manipulation programs come with built-in batch processing methods that allow the user to perform repetitive operations on a bulk of images. In other, larger contexts, batch processing is also responsible for numerous business-related tasks. Computer-generated reporting at the end of the day, which summarizes all of the data collected, is a common batch job performed. Busy databases also take on batch jobs so that when large amounts of collected data might stress the database, they can be added to the database in batches.
As a result of the usefulness of the batch job, more techniques for working with batches continue to evolve. IBM® has developed operating systems and entire software systems for its computing platforms that are specifically oriented toward large batch processing and scheduling operations. Every desktop computer operating system also comes with some means of scheduling or working with batch jobs. Scripting languages have evolved that ease in the preparation and organization of batch jobs that require the use of multiple software programs, and scheduling daemons like UNIX™'s cron or Microsoft®'s job scheduler can run a batch job as a specific user with unique permissions for security purposes.