加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows – 将批处理文件重定向到文件

发布时间:2020-12-14 01:38:53 所属栏目:Windows 来源:网络整理
导读:我有一个执行 java应用程序的批处理文件.我试图修改它,以便每当发生异常时,它会将STDERR写入一个文件. 看起来像这样: start java something.jar method %1 %2 2 log.txt 有没有办法我可以将参数%1和%2写入log.txt文件?每次这个批处理文件被调用时,只有发
我有一个执行 java应用程序的批处理文件.我试图修改它,以便每当发生异常时,它会将STDERR写入一个文件.

看起来像这样:

start java something.jar method %1 %2 2>> log.txt

有没有办法我可以将参数%1和%2写入log.txt文件?每次这个批处理文件被调用时,只有发生异常时,我不想将其写入日志文件.

我试图寻找一种将STDERR重定向到一个变量的方法,但是我无法理解.理想情况下,我希望日志文件看起来像:

Batch file called with parameters:
- "first arg"
- "second arg"
Exception: 
java.io.exception etc...

------------------------------------

Batch file called with parameters:
- "first arg"
- "second arg"
Exception: 
java.io.exception etc...
这样的事情可能会起作用:

javastart.cmd

@echo off
set params=%*
for /f "delims=" %%e in ('java something.jar method %1 %2 ^>nul') do (
    echo Batch file called with parameters:>>log.txt
    echo - Args[]: %*>>log.txt
    echo - Arg[1]: %1>>log.txt
    echo - Arg[2]: %2>>log.txt
    echo Exception: %%e
)

我自己不是一个java程序员,我不能测试这个输出/情况,但是:

1:%*表示每个参数,从1到最后(甚至,尽管它不是直接可用..)无论形成.可能会比使用这个更划算.甚至在间距/报价不佳的时候,你也会有完整的参数.我在日志中添加了一行,显示全线然后参数.如果这是一个不好的论据,你可以看到问题在哪里.

2:将stdout发送到null(^> nul)将只保留stderr输出,设置为%% e

3:无论做什么部分只会发生,因为测试语句实际上有什么作为输出,即如果设置了%% e.

有人说,您必须测试脚本,看看异常是否实际发送到stderr,或者像其他一些软件一样,即使发生错误也可以stdout.

我希望这有帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读