37 releases

0.4.2 Sep 28, 2019
0.4.1 Jul 23, 2019
0.4.0 Jun 23, 2019
0.2.7 Jan 17, 2019
0.1.6 Nov 3, 2017

#77 in Text processing

Download history 997/week @ 2020-12-25 2429/week @ 2021-01-01 2543/week @ 2021-01-08 2726/week @ 2021-01-15 3318/week @ 2021-01-22 2591/week @ 2021-01-29 2691/week @ 2021-02-05 3382/week @ 2021-02-12 3204/week @ 2021-02-19 2570/week @ 2021-02-26 2986/week @ 2021-03-05 2716/week @ 2021-03-12 2940/week @ 2021-03-19 3775/week @ 2021-03-26 3462/week @ 2021-04-02 2971/week @ 2021-04-09

10,845 downloads per month
Used in 2 crates (via cargo-make)


782 lines


crates.io Build Status Build status codecov
license Libraries.io for GitHub Documentation downloads
Built with cargo-make

Coverts simple basic shell scripts to windows batch scripts.


While it is not really possible to take every shell script and automatically convert it to a windows batch file, this library provides a way to convert simple basic shell commands to windows batch commands.
The original goal of this library is to provide users of cargo-make a way to write simple tasks with shell scripts without duplicating their code for each platform.

It is possible to provide custom conversion hints by using the # shell2batch: prefix (see below example).


Simply include the library and invoke the convert function as follows:

extern crate shell2batch;

fn main() {
    let script = shell2batch::convert(
        set -x

        export FILE1=file1
        export FILE2=file2

        #this is some test code
        cp ${FILE1} $FILE2
        cp -r ${DIR1} $DIR2

        mv file2 file3

        export MY_DIR=directory

        #flags are supported
        rm -Rf ${MY_DIR}

        unset MY_DIR

        touch ./file3

        #provide custom windows command for specific shell command
        complex_bash_command --flag1 value2 # shell2batch: complex_windows_command /flag10 windows_value

@echo on

set FILE1=file1
set FILE2=file2

@REM this is some test code
copy %FILE1% %FILE2%
xcopy /E %DIR1% %DIR2%

@REM another
move file2 file3

set MY_DIR=directory

copy /B .\file3+,, .\file3

@REM flags are supported
rmdir /S /Q %MY_DIR%

set MY_DIR=

@REM provide custom windows command for specific shell command
complex_windows_command /flag10 windows_value

    println!("Script: {}", script);


In order to use this library, just add it as a dependency:

shell2batch = "*"

API Documentation

See full docs at: API Docs


See contributing guide

Release History

See Changelog


Developed by Sagie Gur-Ari and licensed under the Apache 2 open source license.


~40K SLoC