Windows 命令行中所有子目录或所有后代目录的通配符

Windows 命令行中所有子目录或所有后代目录的通配符

我缺少目录的通配符。从 Linux 中,我想到可以定义如下路径:

jslint scripts/**/*.js

其中包括脚本目录树中所有后代目录的所有 js 文件。

jslint scripts/*/*.js

包括 scripts/ 的所有直接子目录。

在 Windows 命令行中这似乎不起作用。有没有办法定义相同的?

答案1

没有像 Unix/Linux 那样工作的通配符。在 Windows 命令行中*,或*.*将列出当前目录中的文件和目录。但您不能这样做c:\blah\*\*

你可以做:

    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>

您会看到它列出了要执行的所有命令。它会遍历 c:\tes 及其所有子目录中的每个文件。因此,您可以将 *.mp3 替换为 *.js,将 mp3prog 替换为 jslint,这样可能会得到您想要的结果。

删除 @echo 以执行命令,而不仅仅是显示它们。(尽管@echo在调试时保留命令可能会更好)

*这些括号中的或都*.*可以。

或者从任何目录

    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:\>

或者

    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:\>

答案2

在这个特定情况下,您只需指定根目录名称,而不必使用通配符。至少,对于 jshint 来说,情况确实如此,它现在比 jslint 更受欢迎。

jshint scripts

或者:

cd scripts
jshint .

另请参阅(其中包括 barlop 应用于 jshint 的便捷技巧):https://stackoverflow.com/a/30114333/1593924

相关内容