繁体   English   中英

Windows 批处理“dir”命令更改?

[英]Windows Batch "dir" command change?

这似乎不太可能,但我只能假设最近(本周)在 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不会删除目录。 目录

当您想到它时,如果您想“构建一个小型 Java 项目”(使用脚本的第 2 行),为什么要删除包含 Java 文件的文件夹,这些 Java 文件的完全限定文件名已写入sources.txt ?

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

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

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

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

最重要的是, sources.txt将具有与掩码*.java匹配的完全限定文件名的裸列表,无论您运行脚本时当前目录是什么

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM