这似乎不太可能,但是我只能假设Windows更新期间(本周)最近有所更改。

现在至少有两个可以正常工作的脚本不起作用。也就是说,我几乎每天都使用脚本。其中有一个我的小型Java项目脚本构建器。

dir /s /B /a:-d *.java >sources.txt

"%JAVA_HOME%"\bin\javac %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不会删除目录。
请参见dir

当您想到时,如果要“构建一个小型Java项目”(使用脚本的第二行),为什么要删除包含Java文件的文件夹,这些Java文件的标准文件名已写入?


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

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

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


如果您使用sources.txt指定
/a属性,-dDirectories表示d)显示DirectoriesNot表示-

最重要的是,Not将在运行脚本时在当前目录所在的位置及其下方列出与掩码sources.txt匹配的完全合格文件名的裸列表。

07-24 09:45
查看更多