2012-05-04 2 views
2
mp.StartInfo.FileName = "E:\\Naag\\execute.bat"; 
mp.StartInfo.UseShellExecute = false; 
mp.StartInfo.CreateNoWindow = true; 
mp.StartInfo.RedirectStandardInput = true; 
mp.StartInfo.RedirectStandardOutput = true; 
for (i = StartSerialNo; i<EndSerialNo;i++) 
{ 
    iCnt++; 
    mp.StartInfo.Arguments = sFileName+StartSerialNo.ToString()+ " " + smyName; 
    mp.Start(); 
    mp.WaitForExit(); 
} 

execute.bat의 인수는 filename4567입니다. myname입니다. 이제 Execute.bat는 4 개의 .out 파일을 생성합니다.C에서 몇 dos 명령을 반복하는 방법 #

나는 루프를 만들고 싶으므로 10 번에 40 개의 .out 파일을 가져야한다. 하지만 4 개의 .out 파일 만 있습니다.

이는 루프가 한 번만 수행되었음을 나타냅니다. 그래서 무엇이 잘못 되었습니까?

C#에서 dos 명령을 루프하는 방법은 무엇입니까?

+0

아마도 execute.bat가 이러한 4 개의 파일을 반복적으로 덮어 쓰는 것일까 요? – Henrik

+0

** StartSerialNo **는 동일합니다. 아마도 ** i **를 사용하고 싶습니까? – fankt

+1

그리고 도스는 어디에서 사진으로 나오나요? – CodesInChaos

답변

1

루프가 항상 동일한 파일 이름을 사용하고있어 파일을 덮어 쓰고 있다는 것을 의미하므로이 파일을 변경해야합니다.

mp.StartInfo.FileName = "E:\\Naag\\execute.bat"; 
mp.StartInfo.UseShellExecute = false; 
mp.StartInfo.CreateNoWindow = true; 
mp.StartInfo.RedirectStandardInput = true; 
mp.StartInfo.RedirectStandardOutput = true; 
for (i = StartSerialNo; i<EndSerialNo;i++) 
{ 
    iCnt++; 
    mp.StartInfo.Arguments = sFileName + i + " " + smyName; 
    mp.Start(); 
    mp.WaitForExit(); 
} 

가 선 위치에 루프에 중단 점을 넣어 : 결과

sFileName + i + " " + smyName; 

: 오히려 이름으로

sFileName+StartSerialNo.ToString()+ " " + smyName; 

를 사용하는 것보다 당신은 루프 카운터 i를 사용해야합니다 그것은 파일이 당신에게 이것을 보여줬을 것입니다. (실제로 루프는 10 번 실행되었습니다.)

+0

hoooooooooooooooooooo !, 예. 아주 나쁜 개발자. 이 시간을 낭비했습니다. 감사합니다. :) –

+0

오른쪽 답변이 그것을 naag로 표시하는 것을 기억한다면 – RhysW

+0

@Naag_Algates, 나는 이것을 자기 해결에 대한 교훈으로 간주 할 것입니다. 디버거에서이 루프를 수행하고 파일 이름의 값을 검사하여 루프가 10 번 호출되고 동일한 파일을 겹쳐 쓰는지 확인해야합니다. 이것은 해결하는데 5 분이 걸렸을 것입니다. –

1

프로세스에 전송 된 인수는 모든 루프에서 동일하므로 .bat는 매번 동일한 파일을 생성합니다.

내 생각 엔 (그리고 그냥 추측) 당신은 의미하는 것이 : 당신이 박쥐가 제대로 출력을 생성하고 덮어 쓰기하지 않는 당신의 박쥐 코드를 공유하지 않았기 때문에

mp.StartInfo.Arguments = sFileName+i.ToString()+ " " + smyName; 
+0

예. 사실 StartSerialNo ++를 추가해야합니다. 또는 sFileName + i.ToString() sFileName + StartSerialNo.ToString() 변경해야합니다. 정말 고마워! :)) –

+0

내가 그 결정 어쨌든 그 지능 충분히 후에 .ToString이 필요 없다. – RhysW

+0

r rite. 감사! –

1

내가 추측 같은 4 개의 파일.

관련 문제