批处理脚本调用Bash脚本,但输出文件未填充

批处理脚本调用Bash脚本,但输出文件未填充,bash,batch-file,sed,Bash,Batch File,Sed,我有一个看起来像这样的批处理脚本 @echo关闭 c:/cygwin/bin/bash-li each_sec_extract.bash c:/iperprocess/sprint/file1.txt>c:/iperprocess/sprintbashed/file1.txt each_sec_extract.bash c:/iperprocess/sprint/file2.txt>c:/iperprocess/sprintbashed/file2.txt 当我按原样运行时,会弹出CYGWIN

我有一个看起来像这样的批处理脚本

@echo关闭
c:/cygwin/bin/bash-li each_sec_extract.bash c:/iperprocess/sprint/file1.txt>c:/iperprocess/sprintbashed/file1.txt each_sec_extract.bash c:/iperprocess/sprint/file2.txt>c:/iperprocess/sprintbashed/file2.txt

当我按原样运行时,会弹出CYGWIN bash终端,我可以在屏幕上看到生成我想要的输出的脚本,但是,当我转到文件应该位于的目录(c:/iperfprocess/sprintbashed/)时,我看到一个空文本文件。当我从CMD行手动输入指令时,我会收到相同的结果。然而,当我直接从CYGWIN运行指令时,它工作得非常完美。最让我沮丧的是,这个脚本过去运行得很好,然后我开始遇到SED:权限拒绝错误,这迫使我在管理模式下运行bash.exe

关于可能发生的事情或解决方案有什么想法吗?提前感谢您提供的所有帮助。

这有什么不同吗

@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

SED:Permission错误
是出现空输出文件的根本原因。以管理权限运行bash只是一种解决办法,并没有解决实际问题。由于某种原因,
sed.exe
已损坏。解决方案包括从
http://sourceforge.net/projects/unxutils/?source=dlp
并替换从
CYGWIN/bin/
找到的
sed.exe
,并将其替换为UnxUtils zip文件中的文件


在这些步骤之后,我运行了我的脚本,所有操作都与发布之前一样完美。

您的脚本没有换行符。
@echo off
c:/cygwin/bin/bash-li each_sec_extract.bash c:/iperfprocess/sprint/file1.txt>c:/iperfprocess/sprintbashed/file1.txt each_sec_extract.bashc:/iperfprocess/sprint/file2.txt>c:/iperfprocess/sprintbashed/file2.txt
这不是合法的批处理语法。使用相同的标准输出流时,在一个命令中重定向到多个文件是不可能的。基本上是一样的,我不这样写的原因是因为“SED:permission denied error”,它要求我在管理模式下运行bash.exe以绕过错误;我通过这个脚本运行4000到6000个文件,所以请求管理员权限很多时候都是不可接受的。此外,如您所述编写bash脚本仍然会生成空输出文件