2013-04-28 103 views
0

我有一个批处理脚本,看起来像这样批处理脚本调用bash脚本,但输出文件不填充

@ echo off c:/cygwin/bin/bash -li each_sec_extract.bash c:/iperfprocess/sprint/file1.txt > c:/iperfprocess/sprintbashed/file1.txt each_sec_extract.bash c:/iperfprocess/sprint/file2.txt > c:/iperfprocess/sprintbashed/file2.txt

当我运行该原样,在Cygwin的bash终端弹出,我可以观察但是,当我转到文件应该位于的目录(c:/ iperfprocess/sprintbashed /)时,我在空白文本文件中迎接输出。当我手动输入来自CMD行的指令时,我收到相同的结果。但是,当我直接从CYGWIN运行指令时,它完美地工作。最让我失望的部分,这个脚本用于正常工作,然后我开始得到SED:权限被拒绝,这迫使我在管理模式下运行bash.exe。

有关可能发生什么或解决方案可能的任何想法?提前感谢您提供的任何和所有帮助。

+0

您的脚本没有换行符。 – foxidrive 2013-04-28 09:25:44

+0

'@ echo off'和'c:/ cygwin/bin/bash -li each_sec_extract.bash c:/iperfprocess/sprint/file1.txt> c:/iperfprocess/sprintbashed/file1.txt each_sec_extract之间存在换行符。 bash c:/perfprocess/sprint/file2.txt> c:/ iperfprocess/sprintbashed/file2.txt' – 2013-04-29 01:44:48

+0

这不是合法的批处理语法。在一个命令中重定向到多个文件在使用相同的STDOUT流时不可能如此。 – foxidrive 2013-04-29 10:49:13

回答

0

SED: Permission error是经历过的空输出文件的根本原因。以管理权限运行bash只是解决实际问题的一项工作。由于某种原因,sed.exe变得腐败。该解决方案包括从http://sourceforge.net/projects/unxutils/?source=dlp下载UnxUtils并替换中的sed.exe,并将其替换为UnxUtils zip文件中的一个。

在这些步骤之后,我运行了我的脚本,并且一切工作都完全像它在问题之前一样。

0

这有什么不同吗?

@echo off 
c:/cygwin/bin/bash -li each_sec_extract.bash c:/iperfprocess/sprint/file1.txt > c:/iperfprocess/sprintbashed/file1.txt 
c:/cygwin/bin/bash -li each_sec_extract.bash c:/iperfprocess/sprint/file2.txt > c:/iperfprocess/sprintbashed/file2.txt 
+0

基本上它是一样的,我不写这样的原因是因为“SED:permission denied error”,这要求我在管理模式下运行bash.exe以绕过错误;我通过这个脚本运行4,000到6,000个文件,因此请求管理员权限多次是不可接受的。另外,如上所述编写bash脚本仍然会产生空的输出文件 – 2013-04-29 01:36:44

+0

请参阅我上面的注释。 – foxidrive 2013-04-29 10:50:33