2012-04-09 10 views
2

Unten ist meine Anforderung.Wie führe ich eine Zeile mehrmals mit Windows Batch-Datei?

@echo off 
cls 
Set Sleep=0 
:start 
echo This is a loop 
xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml 
Set /A Sleep+=1 
echo DisplayingSleepvalue 
echo %Sleep% 
goto start 

Hier möchte ich xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml diese Zeile für 30 Mal auszuführen .... Könnte jemand bitte mir auf diesem helfen.

Danke,
Manasa

Antwort

7

Versuchen Sie, diese Art und Weise: -

@echo off 
cls 
Set Sleep=0 
:start 
if %Sleep% == 30 (goto end) 
xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml 
echo This is a loop 
Set /A Sleep+=1 
echo %Sleep% 
goto start 
:end 
echo "am 30 now" 
pause 
+0

danke euch allen für die Antworten ... Ich habe die erforderliche Antwort ... –

+0

Vielen Dank Siva Charan für die Hilfe .. –

1

mit dem for Befehl Versuchen.

5

Sie können eine GOTO-Schleife mit einem inkrementierenden Zähler verwenden, aber eine FOR/L-Schleife ist viel effizienter.

for /l %%N in (1 1 30) do someCommand 

Studie der Dokumentation von HELP FOR oder FOR /? von der Kommandozeile eintippen.

Wenn Sie den gesamten Codeblock wiederholen möchten, schließen Sie den Block in Klammern ein. Sie können die Variable FOR %% N anstelle der Variablen Sleep verwenden.

@echo off 
cls 
for /l %%N in (1 1 30) do (
    echo This is a loop 
    xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml 
    echo DisplayingSleepvalue 
    echo %%N 
) 

Es ist nicht mit Ihrem Beispiel benötigt, aber wenn Sie eine Umgebungsvariable in einer Schleife manipulieren wollen, dann müssen Sie verzögerten Expansion verwenden. Die normale Erweiterung %sleep% wird nur einmal erweitert, wenn die gesamte Schleife geparst wird, während Sie den Wert !sleep! zur Ausführungszeit für jede Schleifeniteration erweitern müssen. Die verzögerte Erweiterung muss aktiviert sein, bevor sie verwendet werden kann.

@echo off 
setlocal enableDelayedExpansion 
cls 
set sleep=0 
for /l %%N in (1 1 30) do (
    echo This is a loop 
    xx.exe yyyyy.dll /p:InputDataSource=Table:table.xml 
    set /a sleep+=1 
    echo DisplayingSleepvalue 
    echo !sleep! 
) 
+0

Ich versuchte dies für die Schleife, aber ich bin mir nicht bewusst, "Pause" und steckte dabei fest. Nun, nach dieser Pause funktioniert es gut –

+0

@ManasaManthri - ??? Ich habe keine Ahnung, von welcher "Pause" du sprichst. – dbenham

1

Youve die Schleife bekam, nur einige mathematische hinzufügen.

Dies erhöht den Zähler jedes Mal, wenn der Befehl ausgeführt wird, und wenn es 30 Mal ausgeführt wurde, wird das Programm beendet.

Verwandte Themen