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

Batch file 重定向cmd输出而不记录日志,batch-file,redirect,cmd,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只包含字符串45a

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

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。我是说,没有日志信息。 有没有办法做到这一点


提前感谢。

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

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

如果您知道命令的输出不会更改,并且键是字符串中的第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个元素感兴趣(默认情况下分隔符是制表符和空格)

在第二种情况下,读取整行并将其存储在变量中。然后变量被“引用”,其中的每个空格被替换为
,因此,初始完整字符串中的每个元素现在都是一个带引号的字符串,每个元素之间用空格分隔,并且
将迭代此列表,将值存储到
%key%
变量中。当变量被覆盖时,最终值是必需的元素