BITS Shell Help

Table of contents

1. Introduction

BITS Shell is a file copier/download manager which utilizes BITS and integrates into the Windows shell.

BITS (Background Intelligent Transfer Service) is a built-in Windows service which implements reliable, resumable file transfer via HTTP as well as transfer of local and networked files. Windows itself uses BITS to download system updates.

Note that BITS does not offer advantage of accelerated file transfers found in typical download manager. Also, because BITS utilizes idle network bandwidth*, its transfer speed can be noticeably low when the network is under high load.

Knowledge of BITS is useful but not necessary to work with BITS Shell. This manual describes basics of BITS.

*Unless the transfer priority is set to "foreground"

Back to top

2. Installation and removal

Administrative rights are required to perform installation and removal.

Automatic installation

Use the provided installer to install and remove the product. Uninstallation preserves the existing job files.

Manual installation

Copy the product's file to desired location and register it with the regsvr32 utility:

regsvr32 bitsshell.dll

To uninstall the product, run regsvr32 with the -u option:

regsvr32 -u bitsshell.dll

then delete the file. You may need to logoff prior to deleting as the shell extension modules are usually locked by shell.

Back to top

3. BITS basics

A unit of work in BITS is called job. Jobs have non-unique names and are uniquely identified by globally-unique identifiers (32-digit hexadecimal numbers).

Job consists of one or more files to be transferred. Each file is specified by its source path and destination path. BITS supports both downloads and uploads but BITS Shell currently supports only downloads. For the downloads, the source path is the path of remote file specified by URL, local path, or UNC path, and the destination path is the path of local file specified by local path or UNC path.

A job can be in one of two essential states (among few others): "transferring" (resumed) or "suspended". When job is in "transferring" state the files associated with the job are transferring; when the job is in "suspended" state the files are not transferring. Newly created jobs are put in suspended state; BITS Shell, however, automatically resumes the created jobs, and then allows to suspend and resume them manually.

The files are transferring as long as user who has created job is logged in. When the user logs out, transferring stops. When the user logs in again, transfer continues from the point where it was stopped.

The transferred files are first written to temporary files named like BIT*.tmp and located in the same directory where destination files will be located. When the transfer is completed, the job is put to "transferred" state and should be "completed" to rename the temporary files to specified destination names. BITS Shell does not automatically complete jobs but provides a command to do it manually.

If destination file is located on NTFS-formatted volume, BITS Shell writes the source path of the file to its alternate data stream named 'notes.txt'. The path is written in UTF-8 encoding. You can use Alternate Data Streams Shell to conviniently view and edit the notes stream.

Job can be cancelled at any point. Cancelled jobs are deleted together with the downloaded temporary files.

Back to top

4. Job files

To provide interface between BITS and a user, BITS Shell uses files with extension '.bits-dnl-job' (not shown in Windows shell) to represent BITS jobs. These files have context menu commands to control jobs, and communicate job state via icons, pop-up infotips, and custom columns.

BITS Shell creates job files when creating or listing jobs and names them identically to the jobs they represent. If job file with the same name already exists, a sequential number is appended to the name of new file. When job name contains characters that are not allowed in file names, such characters are encoded in the job file name as '%xx' where 'xx' is the hexadecimal code of a character. For example, character '?' is encoded as '%3f'. The percent character itself is encoded too as '%25'. To determine actual name of such jobs, use pop-up infotip or column "BITS name" in Windows Explorer.

Renaming or deleting job file does not rename or cancel corresponding job.

Back to top

5. Creating jobs

Jobs can be created from files selected in Windows Explorer, or from clipboard containing files copied from Windows Explorer or containing file paths in textual form. These files will become the source files to copy from. BITS Shell names the job identically to one of the source files.

If source file is a shortcut, Internet shortcut, or alternate data stream link (having extension .lnk, .url, or .adslnk, respectively), then the shortcut target is copied instead of shortcut file itself. If the source file is specified by URL, BITS Shell attempts to query file name via HTTP using that URL; if the attempt fails, one of the parts of the URL is used as a name of a local file.

Note: alternate data stream links are created using Alternate Data Streams Shell.

Creating job from files selected in Windows Explorer

Select files you want to copy and drag them with right mouse button to a directory you want to copy them to. Release the button and click BITS copy here from menu.

Creating job from files copied to clipboard

To put files you want to copy with BITS to clipboard, do one of the following:

After you copy files or paths to clipboard, right-click a directory where you want to copy the files to, and click BITS > Paste.

With both commands, BITS Shell creates a job and job file in the chosen directory, adds the files to the job and resumes the job. Destination files will be named identically to the source files and will be located in the same directory where the job file is located.

Back to top

6. Adding files to a job

The files selected to create a job are added to the job automatically. You can add more files to an existing job by dragging and dropping the files onto a job file. If the job is in "transferred" state then BITS immediately starts copying the added files.

Back to top

7. Monitoring jobs

To get the list of all existing jobs, right-click any directory in Windows Explorer and click BITS > List jobs from context menu. In that directory BITS Shell will create job files for the existing jobs. Only jobs created by current user are listed.

BITS Shell provides the following means to get infomation about a job:

Pop-up infotip

Hover the mouse pointer over a job file to cause the pop-up infotip to appear. The infotip displays the following information about the job:

If the job is in erroneous state then the infotip displays the description of the error.

Job file icon

The job file icon conveys information about job state. The state and the icon correspond as follows:

Job state Icon displayed
suspendedgray disc
transferredgreen disc
transferringorange "pie chart" where the number of filled sectors corresponds to the percentage of transferred bytes with 10% resolution (if the amount of bytes is unknown then the percentage of transferred files is displayed)
all other statesred disc

If job file represents non-existent job then system default file icon is displayed.

Custom columns in detailed view

To display the custom columns, from the menu View click Choose details... and check the following columns:

Column name Information displayed
BITS nameThe name of the job
BITS idThe identifier of the job
BITS stateThe state of the job
BITS % completeThe percentage of transferred bytes (if the amount of bytes is unknown then the percentage of transferred files is displayed)
BITS priorityThe priority of the job

BITS Shell automatically refreshes the job file icon and columns data ten times per minute. Due to the way Windows shell works the automatic refresh may fail. If job information appears to be stale, click Refresh state from context menu of a job file.

The following screenshot provides an example of job state display:

Pic. 1. Example of job state display

Back to top

8. Controlling jobs

A context menu of a job file contains commands to resume, suspend, complete, or cancel the job, and to set job priority. For details see BITS basics.

Back to top

9. Wiping out

BITS Shell installs disk cleaner which is accessible through standard Disk Cleanup utility. It allows to delete all job files on selected drive.

Pic. 2. Cleaning a disk of job files

Back to top

10. Getting further help

You can send questions and feedback by e-mail: support (at) evilapp (dot) com,

You can also subscribe to RSS feed to receive notifications about new product releases.

Back to top

11. Version history

version 1.1.1 released 23-Jun-2014
Menu item Create job renamed to Paste.
URLs of source files are decoded before deriving destination file names from them.
Jobs containing source files with long paths could not be completed.
version 1.1 released 07-Jul-2013
Job priority control.
Changed style of job state icons.
version 1.0.3 released 20-Mar-2013
Copying of alternate data streams via *.adslnk files.
If amount of bytes being transferred is unknown then percentage of transferred files is displayed.
version 1.0.2 released 24-Jan-2013
Internet shortcut files (*.url) dropped onto a job file would not add to the job.
version 1.0.1 released 22-Jan-2013
Broke copying files from a zip folder.
version 1.0 released 06-Jan-2013
First release.

Back to top

12. Disclaimer

The software is provided "AS IS" without any warranty, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The author will not be liable for any special, incidental, consequential or indirect damages due to loss of data or any other reason.

Back to top