Windows Batch "dir"命令更改?



这似乎不太可能,但我只能假设最近(本周(在Windows更新期间发生了一些变化。

现在至少有两个用于工作的脚本不起作用。 也就是说,我几乎每天都使用的脚本。其中包括我为一个小型Java项目编写的脚本生成器。

dir /s /B /a:-d *.java >sources.txt
"%JAVA_HOME%"binjavac %javaopts% -d ..classes -nowarn -classpath %clspath% @sources.txt

标准,对吧? 除了"dir"不再像以前那样删除目录名称(根据a:-d(。 因此,我的 java 编译脚本失败了。 (为什么是,我也使用 Eclipse。

如中所示,源中列出的文件包含文件的完整路径("C:\X\Y\Z\src\foo.java"(。 通过手动删除 src 前面的路径 ("c:\x\y\z"( 相同的脚本。 我已经在选项上尝试了不同的情况,围绕javac命令进行了更改,但是由于源文件中标识的完整路径,我总是收到解析错误"未知选项c:...:)。

不管它为什么会发生,它现在正在发生,我正在寻找一个我还没有找到的替代方案。 一个简单的替代方案 - 我可能可以编写一个循环来删除"src"之前的任何内容(例如( - 但这两个命令被引用了很多很多地方,所以我想我会节省某人的时间并发布自己。

发表评论的人是正确的。 参数/a:-D不会删除目录。 见目录。

当你想到它时,如果你想"构建一个小的Java项目"(使用脚本的第二行(,你为什么要删除包含java文件的文件夹,这些文件的完全限定文件名被写入sources.txt

/s:列出指定文件名在 指定的目录和所有子目录。

/b:显示目录和文件(完全限定名称(的裸列表,没有其他信息(即省略日期、时间、大小(。

/a[[:]]:仅显示这些目录的名称和 具有您指定的属性的文件。

如果使用/a指定-d属性中,Directories(d表示Directories(Not显示(-表示Not(

底线是,sources.txt将有一个完全限定文件名的裸列表,与运行脚本时当前目录处和下方的掩码*.java匹配

最新更新