我理解如何使用该call
命令从父文件中调用嵌套批处理文件,因为有大量资源:
但是,我不明白为什么从另一个批处理文件调用终止父代.
对于一个不那么抽象的例子,假设我有一个批处理文件,它将单独的批处理文件"链接"在一起,而我错误地没有call
在每行前面添加:
foo.bat
bar.bat
Run Code Online (Sandbox Code Playgroud)
这只会执行foo.bat然后退出.要正确执行这两个命令,我必须在每个语句之前添加前调用:
call foo.bat
call bar.bat
Run Code Online (Sandbox Code Playgroud)
为什么第一个功能仍然存在?为什么没有改变?我注意到call
这是在20世纪80年代后期发布的MS-DOS 3.3中引入的,所以这个功能仍然在这里用于反向兼容吗?
我无法想到它的任何(实际)用法,但也许我已经习惯了"新的"编程技术.
我正在用sbt构建一个Scala项目,并使用sbt-assembly插件创建一个胖jar.我可以通过添加以下内容来添加非托管jar(例如Sigar jar)build.sbt
.
unmanagedJars in Compile +=
file("lib/hyperic-sigar-1.6.4/sigar-bin/lib/sigar.jar")
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行它时,我收到以下错误,因为*.so
jar不包含库.
no libsigar-amd64-linux.so in java.library.path
org.hyperic.sigar.SigarException: no libsigar-amd64-linux.so in java.library.path
at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:172)
at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:100)
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.hyperic.sigar.ptql.SigarProcessQuery.create(Ljava/lang/String;)V
at org.hyperic.sigar.ptql.SigarProcessQuery.create(Native Method)
at org.hyperic.sigar.ptql.ProcessQueryFactory.getQuery(ProcessQueryFactory.java:66)
at org.hyperic.sigar.ptql.ProcessFinder.findSingleProcess(ProcessFinder.java:44)
Run Code Online (Sandbox Code Playgroud)
我想要包含的库是lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
,它们需要链接到jar中类路径中的目录.我知道做这样的映射的唯一方法是:
resourceDirectory in Compile <<=
baseDirectory{ _ / "lib/hyperic-sigar-1.6.4/sigar-bin/lib" }
Run Code Online (Sandbox Code Playgroud)
这会导致*.so
库被添加到jar的根目录,但不会添加到特定目录.如何指定要映射lib/hyperic-sigar-1.6.4/sigar-bin/lib/*.so
到jar中类路径中的目录的资源映射?我正在尝试做什么的术语是什么?
假设我有一个Scala程序,它创建以.foo
.结尾的文件.
我正在构建,sbt
并希望在sbt clean
调用时删除这些文件.
在SBT构建中添加额外的目录以清除任务显示可以添加单个文件
cleanFiles <+= baseDirectory { _ / "test.foo" }
Run Code Online (Sandbox Code Playgroud)
但是,目前还不清楚如何扩展这个:
cleanFiles <append> <*.foo>
Run Code Online (Sandbox Code Playgroud)
所有.foo
文件都在同一目录中,因此我不需要递归检查目录.虽然,这也很有趣.
sbt
清除与通配符或正则表达式匹配的文件?sbt clean
删除程序生成的文件是一个糟糕的设计决定吗?我应该在程序中使用标志吗?使用sbt clean
似乎吸尘器我而不必调用sbt clean
然后sbt "run --clean"
.