小编Bra*_*mos的帖子

为什么调用嵌套的批处理文件而不在行前面"调用"退出父批处理文件?

我理解如何使用该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中引入的,所以这个功能仍然在这里用于反向兼容吗?

我无法想到它的任何(实际)用法,但也许我已经习惯了"新的"编程技术.

cmd batch-file

31
推荐指数
2
解决办法
2万
查看次数

在jar中包含Hyperic Sigar库,同时为Scala项目使用sbt程序集

我正在用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)

但是,当我尝试运行它时,我收到以下错误,因为*.sojar不包含库.

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 sbt sbt-assembly

6
推荐指数
1
解决办法
3429
查看次数

Scala sbt - 使用通配符或正则表达式清理文件

假设我有一个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文件都在同一目录中,因此我不需要递归检查目录.虽然,这也很有趣.

  1. 如何配置sbt清除与通配符或正则表达式匹配的文件?
  2. sbt clean删除程序生成的文件是一个糟糕的设计决定吗?我应该在程序中使用标志吗?使用sbt clean似乎吸尘器我而不必调用sbt clean然后sbt "run --clean".

scala sbt

3
推荐指数
1
解决办法
988
查看次数

标签 统计

sbt ×2

scala ×2

batch-file ×1

cmd ×1

sbt-assembly ×1