|Applications are Evil||BITS Shell Help|
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"
Administrative rights are required to perform installation and removal.
Use the provided installer to install and remove the product. Uninstallation preserves the existing job files.
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.
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.
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.
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.
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 clickfrom menu.
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.
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.
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.
To get the list of all existing jobs, right-click any directory in Windows Explorer and clickfrom 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:
If the job is in erroneous state then the infotip displays the description of the error.
The job file icon conveys information about job state. The state and the icon correspond as follows:
|Job state||Icon displayed|
|transferring||orange "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 states||red disc|
If job file represents non-existent job then system default file icon is displayed.
To display the custom columns, from the menuclick and check the following columns:
|Column name||Information displayed|
|BITS name||The name of the job|
|BITS id||The identifier of the job|
|BITS state||The state of the job|
|BITS % complete||The percentage of transferred bytes (if the amount of bytes is unknown then the percentage of transferred files is displayed)|
|BITS priority||The 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, clickfrom context menu of a job file.
The following screenshot provides an example of job state display:
|Pic. 1. Example of job state display|
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.
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|
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.
|version 1.1.1 released 23-Jun-2014|
|Menu itemrenamed to .|
|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|
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.