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

时间:2014-11-30 15:46:00

标签: java batch-file cmd

我正在尝试从我的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"));

1 个答案:

答案 0 :(得分:0)

首先,请查看Microsoft的TechNet文章using command redirection operators

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

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

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

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

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

一般情况下,建议不要在标准输出的批处理文件 1 中添加。

为什么?

查看执行的内容:

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 写入文本文件。