从java运行批处理文件时,在>>之前随机出现1

我试图从我的Java代码运行批处理文件

这是批处理文件行:

C:\Users\abdelk\workspace\Symmetrix>symconfigure -sid 13 -cmd "create dev count=16, size=139840, emulation=FBA , config=TDEV;" commit -nop >> out_file.txt 

当我从我的代码运行批处理文件时,在“>>”之前随机出现“1 ”。 所以cmd中的行变为:

 C:\Users\abdelk\workspace\Symmetrix>symconfigure -sid 13 -cmd "create dev count=16, size=139840, emulation=FBA , config=TDEV;" commit -nop **1>>** outfile.txt 

我不知道如何删除这个随机出现的“1”

这是我从我的代码运行批处理文件的方式

 rt.exec("cmd.exe /c start "+functions_object.edit_host_name(current_host_name)+"_Meta.bat",null,new File("C:\\Users\\abdelk\\workspace\\Project")); 

首先, 使用命令重定向运算符查看Microsoft的TechNet文章。

数字1是句柄标准输出 (标准输出)的等效项。

在批处理文件中,重定向标准输出中省略了数字1

例如,将这两行放入批处理文件并运行它

 echo This is just a redirect test.>CapturedStandardOutput.txt @pause 

您将看到cmd.exe自动向重定向运算符>插入1 (空格和1)。

通常,不建议在批处理文件1中添加stdout

为什么?

查看执行的内容:

 echo This is just a redirect test.1>CapturedStandardOutput.txt @pause 

您在控制台窗口中看到:

 echo This is just a redirect test.1 1>CapturedStandardOutput.txt 

文件CapturedStandardOutput.txt包含以下行:

 This is just a redirect test.1 

解决方案是在批处理文件中使用:

 echo This is just a redirect test. 1>CapturedStandardOutput.txt 

这导致执行该行:

 echo This is just a redirect test. 1>CapturedStandardOutput.txt 

现在文件CapturedStandardOutput.txt中有以下行:

 This is just a redirect test. 

您在浏览器窗口中看不到的是,与第一个示例相比,文本文件中的行现在以尾随空格结束。 因此,最好是使用>>>始终不使用1 ,否则控制写入文本文件的内容并不是很简单。

还有一个提示:

要将文本重定向到以1,2,…,9结尾的文件,必须使用^来转义该数字。

用。执行批处理文件

 echo Number is ^1>CapturedStandardOutput.txt @pause 

导致执行命令行

 echo Number is 1 1>CapturedStandardOutput.txt 

并在文件CapturedStandardOutput.txt中行

 Number is 1 

在行尾没有尾随空格。

0离开>>>不得转义以将数字0写入文本文件。