这似乎不太可能,但是我只能假设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
属性,-d
(Directories
表示d
)显示Directories
(Not
表示-
)
最重要的是,Not
将在运行脚本时在当前目录所在的位置及其下方列出与掩码sources.txt
匹配的完全合格文件名的裸列表。