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%
变量中。当变量被覆盖时,最终值是必需的元素