Wildcard for all subdirectories or all descendent directories in windows commandline

I am missing the wildcard character for directories. From linux I have in mind that one can define a path like this:

jslint scripts/**/*.js

which includes all js files from all descendent directories in the scripts directory tree.

jslint scripts/*/*.js

includes all direct subdirectories of scripts/.

In the windows command line this seems not to work. Is there any way to define the same?


There isn't a wildcard that works the way it does in Unix/Linux. In the Windows command line * or *.* will list files and directories in the current directory. But you can't do c:\blah\*\*

You can do:

    C:\tes>for /r %f in (*.mp3) do @echo mp3prog %f
    mp3prog C:\tes\a.mp3
    mp3prog C:\tes\mof.mp3
    mp3prog C:\tes\qw.mp3
    mp3prog C:\tes\y\a.mp3

C:\tes>

You see it lists all the commands it would execute. It goes through every file in c:\tes and all its subdirectories. So you could replace *.mp3 with *.js and mp3prog with jslint and that might give you what you want.

Remove the @echo to execute the commands instead of just displaying them. (Though it can be good to leave the @echo command in while debugging)

Either * or *.* in those brackets works fine.

Or from any directory

    C:\>for /r c:\tes %f in (*.*) do @echo mp3prog %f
    mp3prog c:\tes\103.gif
    mp3prog c:\tes\a.mp3
    mp3prog c:\tes\mof.mp3
    mp3prog c:\tes\oo.mpg
    mp3prog c:\tes\qw.mp3
    mp3prog c:\tes\t.mpg
    mp3prog c:\tes\ta.mpg
    mp3prog c:\tes\t_.mpg
    mp3prog c:\tes\u.mpg
    mp3prog c:\tes\uu.mpg
    mp3prog c:\tes\y\a.mp3
    
    C:\>

or

    C:\>for /f %f in ('dir c:\tes /s/b') do @echo mp3prog %f
    mp3prog c:\tes\103.gif
    mp3prog c:\tes\a.mp3
    mp3prog c:\tes\ff
    mp3prog c:\tes\gg
    mp3prog c:\tes\mof.mp3
    mp3prog c:\tes\oo.mpg
    mp3prog c:\tes\qw.mp3
    mp3prog c:\tes\t.mpg
    mp3prog c:\tes\ta.mpg
    mp3prog c:\tes\t_.mpg
    mp3prog c:\tes\u.mpg
    mp3prog c:\tes\uu.mpg
    mp3prog c:\tes\y
    mp3prog c:\tes\y\a.mp3
    
    C:\>

In this particular case, all you need to do is specify the root directory name instead of using wildcards. At least, that is true for jshint, which is more popular now than jslint.

jshint scripts

Or:

cd scripts
jshint .

See also (which includes barlop's handy trick applied to jshint): https://stackoverflow.com/a/30114333/1593924