Windows批处理文件可以确定自己的文件名吗?
例如,如果我运行批处理文件C:\ Temp\myScript.bat,myScript.bat中是否有可以确定字符串"myScript.bat"的命令?
我无法弄清楚如何配置我的log4j,以便我的debugLog和我的reportLog彼此分开(不是附加的).为什么,在下面的配置中,reportsLog始终为空?
log4j.rootLogger=TRACE, stdout, debugLog
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n
log4j.appender.debugLog=org.apache.log4j.FileAppender
log4j.appender.debugLog.File=logs/debug.log
log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout
log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n
log4j.reportsLog=DEBUG,reportsLog
log4j.appender.reportsLog=org.apache.log4j.FileAppender
log4j.appender.reportsLog.File=logs/reports.log
log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout
log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n
Run Code Online (Sandbox Code Playgroud)
这是我的Java代码:
package test;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class HelloLogger {
static final Logger debugLog = Logger.getLogger("debugLog");
static final Logger resultLog = Logger.getLogger("reportsLog");
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
debugLog.debug("Hello debugLog message");
resultLog.debug("Hello reportsLog message");
}
}
Run Code Online (Sandbox Code Playgroud) 如何将详细垃圾收集输出重定向到文件?Sun的网站显示了Unix的一个例子,但它不适用于Windows.
我刚开始使用Groovy.我找不到任何关于如何处理Groovy脚本的参数的例子,所以我自己攻击了这个方法.必须有更好的方法来做到这一点?如果是这样,我正在寻找这种更好的方式,因为我可能忽视了这一点.
import groovy.lang.Binding;
Binding binding = new Binding();
int x = 1
for (a in this.args) {
println("arg$x: " + a)
binding.setProperty("arg$x", a);
x=x+1
}
println binding.getProperty("arg1")
println binding.getProperty("arg2")
println binding.getProperty("arg3")
Run Code Online (Sandbox Code Playgroud) 我试图以编程方式在Java中找到当前运行/调试项目的路径,我查看了谷歌,我发现了什么System.getProperty("user.id"),这没有让我得到项目的路径.
我知道Environment.currentDirectoryC#中的命令给出了当前运行/调试项目的路径,所以我确信在Java中也必须有类似的方式.
所以我问是否有人可以告诉我或给我一个代码,以编程方式找到当前运行/调试项目的路径?
编辑:我正在编写插件,用eclipse开始加载.插件为eclipse的工作台添加了一个按钮,当我点击按钮时,在插件的代码中搜索当前目录路径.
我的目的是,当我调试项目然后单击按钮时,会弹出一个窗口显示调试项目的路径,谢谢
如果我想解析这个怎么办:
java MyProgram -r opt1 -S opt2 arg1 arg2 arg3 arg4 --test -A opt3
Run Code Online (Sandbox Code Playgroud)
我想在我的程序中得到的结果是:
regular Java args[] of size=4
org.apache.commons.cli.Options[] of size=3
org.apache.commons.cli.Options[] #2 of size=1
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用Apache Commons CLI,但文档对我上面提到的案例有点不清楚.具体来说,文档没有告诉您如何处理我在下面指定的第三种类型的选项:
Run Code Online (Sandbox Code Playgroud)1. options with a "-" char 2. options with a "--" char 3. options without any marker, or "bare args"
我希望Apache Commons CLI可以工作,但是如果那些args没有选项前缀,STILL能够将常规args传递给程序.也许它确实如此,但是当我通读它时,文档并没有说出来......
我有一个关于如何分辨用户使用的shell的问题.假设一个脚本,如果用户正在使用zsh,那么将PATH放到他的.zshrc,如果使用bash应该放入.bashrc.并相应地设置rvmrc.
#!/usr/bin/env bash
export PATH='/usr/local/bin:$PATH'" >> ~/.zshrc
source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)
我尝试过以下但不起作用:(
if [[ $0 == "bash ]]; then
export PATH='/usr/local/bin:$PATH'" >> ~/.bashrc
elif [[ $0 == "zsh" ]]; then
export PATH='/usr/local/bin:$PATH'" >> ~/.zshrc
fi
# ... more commands ...
if [[ $0 == "bash ]]; then
[[ -s '/Users/`whoami`/.rvm/scripts/rvm' ]] && source '/Users/`whoami`/.rvm/scripts/rvm'" >> ~/.bashrc
source ~/.bashrc
elif [[ $0 == "zsh" ]]; then
[[ -s '/Users/`whoami`/.rvm/scripts/rvm' ]] && source '/Users/`whoami`/.rvm/scripts/rvm'" >> ~/.zshrc
source ~/.zshrc
fi
Run Code Online (Sandbox Code Playgroud) 我在java文件(MyRtmpClient.java)中有以下内容:
import org.apache.mina.common.ByteBuffer;
Run Code Online (Sandbox Code Playgroud)
并且ByteBuffer位于JAR文件中(当然具有正确的目录结构).我需要的jar文件和其他文件与.java文件位于同一目录中.
然后我用这行编译:
javac -cp ".;*.jar" MyRtmpClient.java
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
MyRtmpClient.java:3: package org.apache.mina.common does not exist
import org.apache.mina.common.ByteBuffer;
如何在项目中包含jar文件?
有谁能解释一下?我可以使用Windows命令提示符循环计数,使用此方法:
SET /A XCOUNT=0
:loop
SET /A XCOUNT+=1
echo %XCOUNT%
IF "%XCOUNT%" == "4" (
GOTO end
) ELSE (
GOTO loop
)
:end
Run Code Online (Sandbox Code Playgroud)
但是这种方法不起作用(它为文件中的每一行打印出"1").它的作用就像变量超出范围:
SET /A COUNT=1
FOR /F "tokens=*" %%A IN (config.properties) DO (
SET /A COUNT+=1
ECHO %COUNT%
)
Run Code Online (Sandbox Code Playgroud) Git项目,全局和系统变量的优先级是什么?
所以,如果我在我的.gitconfig文件中全局设置配置,哪个配置会覆盖它:它是项目级配置还是系统级配置?