重定向cmd输出而不记录日志

时间:2014-10-30 11:06:47

标签: batch-file redirect cmd

我正在尝试编写一个批处理文件,我有一个命令:

encrypt.bat -g firstSeed > C:\MyWorkingDir\key.txt

此命令创建包含类似

的字符串的文件key.txt(以前不存在)
2014-10-30 11:52:51,430 INFO  [main] security.EncryptionUtil main (EncryptionUtil.java:304) - 45aa826df39cd1b4

现在的问题是我希望文件key.txt只包含字符串45aa826df39cd1b4。我的意思是,没有日志信息。 有办法吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果您知道命令的输出不会改变且键是字符串中的第9个非空白元素,那么最简单的解决方案将是

@echo off
    setlocal enableextensions disabledelayedexpansion
    for /f "tokens=9" %%a in ('encrypt.bat -g firstSeed') do (>"C:\MyWorkingDir\key.txt" echo(%%a)

如果线的格式可以改变,最好首先读取数据然后将其拆分

@echo off
    setlocal enableextensions disabledelayedexpansion
    for /f "delims=" %%a in ('encrypt.bat -g firstSeed') do set "line=%%a"
    for %%a in ("%line: =" "%") do if not "%%~a"=="" set "key=%%~a"
    >"C:\MyWorkingDir\key.txt" echo(%key%

在这两种情况下,for /f命令都会执行encrypt.bat命令并检索输出。

在第一种情况下,我们只对行中的第9个元素感兴趣(默认情况下分隔符是制表符和空格)。

在第二种情况下,整行被重新加载并存储在变量中。然后变量是"引用"并且其中的每个空格都替换为" ",因此,初始完整字符串中的每个元素现在都是带引号的字符串,每个元素都有空格,for将遍历此列表存储值%key%变量。当变量被覆盖时,最终值是必需元素。

答案 1 :(得分:0)

假设空格(或制表符)分隔的“单词”的数量是常数:

for /f "tokens=9" %%A in ('encrypt.bat -g firstSeed') echo %%A>"C:\MyWorkingDir\key.txt"