Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Durchlaufzähler in for-Schleife

Frage Entwicklung Batch & Shell

Mitglied: Pantherstyle

Pantherstyle (Level 1) - Jetzt verbinden

01.04.2009, aktualisiert 09:47 Uhr, 3605 Aufrufe, 17 Kommentare

Hallo,
ich möchte eine for-Schleife basteln, welche mir den aktuellen Durchlauf angeben kann, damit folgendes Format erreicht werden kann:

print 'Change 1'
--:r ".\BI_OIVERFICATION_REP_CREATE.sql"
print 'Change 2'
--:r ".\BI_OIVERFICATION_REP_CSVARCRRC_GENERATE.sql"
print 'Change 3'
--:r ".\BI_OIVERFICATION_REP_CSV_GENERATE.sql"

Wie man sieht wird der aktuelle Durchlauf für Change 1-3 benötigt (unbekannt viele durchläufe möglich).
ich habe ja gehofft, dass es im folgenden Format irgendwie möglich wäre aber es hat nicht gegeht:

01.
set anzahl=0 
02.
for /F "skip=1 tokens=1* delims=\" %%i IN (%DIFFTOOL_PATH%\neu.txt) DO ( 
03.
set anzahl=+1 
04.
echo %anzahl% 
05.
)
Wie könnte ich das besser umsetzen?
Mitglied: Pantherstyle
01.04.2009 um 10:10 Uhr
Hier nochmal die genaue Umsetzung von dem was geplant ist:
01.
for /F "skip=3 tokens=1* delims=\" %%i IN (%DIFFTOOL_PATH%\neu.txt) DO ( 
02.
echo print 'New 1' >> %HELP_PATH%\install_backend.sql 
03.
echo --:r "%%j" >> %HELP_PATH%\install_backend.sql 
04.
)
Dabei bleibt das Problem mit dem Durchnummerieren bestehen. Der aktuelle Durchlauf soll hinter das New gesetzt werden.

Ich hoffe dass mir da einer helfen kann ....
Bitte warten ..
Mitglied: godlie
01.04.2009 um 12:49 Uhr
Naja wie wärs mit sowas hier:
01.
@echo off 
02.
set anz=0 
03.
for /F %%i in ('dir /b') do call :count %%i 
04.
pause 
05.
goto :EOF 
06.
 
07.
:count 
08.
set /a anz=%anz%+1 
09.
echo print 'Change %anz%' 
10.
echo --:r".\%*" 
11.
goto :EOF
das problem das du hier natürlich hast, ist wenn in einem Dateinamen ein & oder ein Leerzeichen vorkommt stolpert das teil,
weil bei der Übergabe an count das %%i nicht unter "" steht und dadurch die Leerzeichen und & nicht richtig übergeben werden.
Bitte warten ..
Mitglied: Pantherstyle
01.04.2009 um 12:59 Uhr
Ich kann das nicht ganz nachvollziehen, da ich auch die Sprungmarke EOF nicht finden kann.

Hier nochmal mein eingesetzter Code
01.
set anz=0  
02.
for /F "skip=1 tokens=1* delims=\" %%i in (%DIFFTOOL_PATH%\veraendert.txt) do ( 
03.
call  
04.
:count %%i 
05.
goto :EOF 
06.
:count 
07.
set /a anz=%anz%+1  
08.
echo print 'Change %anz%' 
09.
echo --:r".\%*" 
10.
goto :EOF 
11.
) 
Bitte warten ..
Mitglied: godlie
01.04.2009 um 13:01 Uhr
EOF = End Of File...

du hast das ein wenig falsch verstanden:

01.
set anz=0  
02.
for /F "skip=1 tokens=1* delims=\" %%i in (%DIFFTOOL_PATH%\veraendert.txt) do call :count %%i 
03.
goto :EOF 
04.
 
05.
:count 
06.
set /a anz=%anz%+1  
07.
echo print 'Change %anz%' 
08.
echo --:r".\%*" 
09.
goto :EOF
Bitte warten ..
Mitglied: Pantherstyle
01.04.2009 um 13:20 Uhr
Allerdings wie soll er mir das nachh oben zählen, wenn er gleich beim ersten durchlauf zum Ende geht und aufhört? könntest du bitte einen syntaktisch richtigen code posten, damit ich es auch verstehe ;D
Bitte warten ..
Mitglied: godlie
01.04.2009 um 13:22 Uhr
das goto :EOF macht er ja erst nachdem der die Schleife durch hat.
Bitte warten ..
Mitglied: Pantherstyle
01.04.2009 um 13:28 Uhr
Vielleicht reden wir etwas aneinander vorbei darum nochmal etwas genauer.

ich habe bis jetzt folgenden Code:
01.
for /F "skip=3 tokens=1* delims=\" %%i IN (%DIFFTOOL_PATH%\neu.txt) DO ( 
02.
echo print 'New 1' >> %HELP_PATH%\install_backend.sql 
03.
echo --:r "%%j" >> %HELP_PATH%\install_backend.sql 
04.
)
Dieser führt zu einer Ausgabe wie dieser:

print 'New 1'
--:r "convertDateToRnr.sql "
print 'New 1'
--:r "getInvoiceDocName.sql "
print 'New 1'
--:r "UTIL_convertToFloat.sql "
print 'New 1'
--:r "BI_EPM_IMPORT_ERRORS.sql "
print 'New 1'
--:r "BI_EPM_SAP_IMPORT.sql "
etc.......

Allerdings möchte ich, dass er mir eine Ausgabe wie die folgende liefert:

print 'New 1'
--:r "convertDateToRnr.sql "
print 'New 2'
--:r "getInvoiceDocName.sql "
print 'New 3'
--:r "UTIL_convertToFloat.sql "
print 'New 4'
--:r "BI_EPM_IMPORT_ERRORS.sql "
print 'New 5
--:r "BI_EPM_SAP_IMPORT.sql "

etc.....

Wie könnte ich das denn gescheit umsetzen?
Bitte warten ..
Mitglied: godlie
01.04.2009 um 13:40 Uhr
das steht in meinem vorletzten post.
Bitte warten ..
Mitglied: Pantherstyle
01.04.2009 um 14:03 Uhr
Sorry hab ich wohl falsch verstanden. Jetzt funktioniert eine Schleife nach dem Prinzip. Allerdings verheddert sich die 2. in eine Endlosschleife:
01.
set anz=0 
02.
for /F "skip=1 tokens=1* delims=\" %%i in (%DIFFTOOL_PATH%\veraendert.txt) do call :count %%j 
03.
goto :weiter 
04.
:count 
05.
set /a anz=%anz%+1 
06.
echo print 'Change %anz%' >> %HELP_PATH%\install_backend.sql 
07.
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql 
08.
:weiter 
09.
 
10.
set anz=0 
11.
for /F "skip=3 tokens=1* delims=\" %%i in (%DIFFTOOL_PATH%\neu.txt) do call :zaehl %%j 
12.
goto :erneut 
13.
:zaehl 
14.
set /a anz=%anz%+1 
15.
echo print 'New %anz%' >> %HELP_PATH%\install_backend.sql 
16.
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql 
17.
:erneut
Wo liegt da der Fehler?
Bitte warten ..
Mitglied: godlie
01.04.2009 um 14:07 Uhr
Zeile 17 entfernen.
Zeile 12 goto :EOF
oder goto weglassen
Bitte warten ..
Mitglied: Pantherstyle
01.04.2009 um 14:11 Uhr
Zeile 17 entfernt und Zeile 12 goto :EOF

Trotzdem Endlosschleife

01.
set anz=0 
02.
for /F "skip=1 tokens=1* delims=\" %%i in (%DIFFTOOL_PATH%\veraendert.txt) do call :count %%j 
03.
goto :weiter 
04.
:count 
05.
set /a anz=%anz%+1 
06.
echo print 'Change %anz%' >> %HELP_PATH%\install_backend.sql 
07.
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql 
08.
:weiter 
09.
 
10.
set anz=0 
11.
for /F "skip=3 tokens=1* delims=\" %%i in (%DIFFTOOL_PATH%\neu.txt) do call :zaehl %%j 
12.
goto :EOF 
13.
:zaehl 
14.
set /a anz=%anz%+1 
15.
echo print 'New %anz%' >> %HELP_PATH%\install_backend.sql 
16.
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql 
17.
 
Bitte warten ..
Mitglied: godlie
01.04.2009 um 14:17 Uhr
hm probiers mal mit einem goto :EOF bei Zeile 17
ansonsten brauch ich die testdateien mal damit cih das nachstellen kann.
Bitte warten ..
Mitglied: Pantherstyle
01.04.2009 um 14:26 Uhr
geht au nich richtig.

veraendert.txt enthält:
FN\UTIL_isFileExistent.sql
FN\ACMConvertDate.sql
FN\BfxFctMasterGetOption.sql
FN\zZz.txt
FN\UTIL_getDatePart.sql
FN\UTIL_getFilename.sql
P\UTIL_getErrorInfo.sql

neu.txt enthält:
FN\convertDateToRnr.sql
FN\getInvoiceDocName.sql
FN\UTIL_convertToFloat.sql
P\BI_EPM_IMPORT_ERRORS.sql
P\BI_EPM_SAP_IMPORT.sql
P\BI_ERP_GET_SINGLE_FILENAME.sql
P\BI_STAMMDATEN_PROJECTS_IMPORT.sql
Bitte warten ..
Mitglied: godlie
01.04.2009 um 15:50 Uhr
Also mit diesem code erhalte ich keine endlosschleife.
Das was du evtl. für eine Endlosschleife haltest wird einfach dementsprechend lange dauern.

01.
set anz=0 
02.
set HELP_PATH="foob" 
03.
for /F "skip=1 tokens=1* delims=\" %%i in (veraendert.txt) do call :count %%j 
04.
goto :weiter 
05.
 
06.
:weiter 
07.
set anz=0 
08.
for /F "skip=3 tokens=1* delims=\" %%i in (neu.txt) do call :zaehl %%j 
09.
goto :EOF 
10.
 
11.
:count 
12.
set /a anz=%anz%+1 
13.
echo print 'Change %anz%' >> %HELP_PATH%\install_backend.sql 
14.
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql 
15.
goto :weiter 
16.
 
17.
:zaehl 
18.
set /a anz=%anz%+1 
19.
echo print 'New %anz%' >> %HELP_PATH%\install_backend.sql 
20.
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql 
21.
goto :EOF
Bitte warten ..
Mitglied: Pantherstyle
01.04.2009 um 16:01 Uhr
Hallo,
ich habe deinen Post 1zu1 übernommen allerdings ist er immernoch in der Endlosschleife:
print 'Change 1'
--:r".\ACMConvertDate.sql"
print 'New 1'
--:r".\convertDateToRnr.sql"
print 'New 2'
--:r".\getInvoiceDocName.sql"
print 'New 3'
--:r".\UTIL_convertToFloat.sql"
print 'New 4'
--:r".\BI_EPM_IMPORT_ERRORS.sql"
print 'New 5'
--:r".\BI_EPM_SAP_IMPORT.sql"
print 'New 6'
--:r".\BI_ERP_GET_SINGLE_FILENAME.sql"
print 'New 7'
--:r".\BI_STAMMDATEN_PROJECTS_IMPORT.sql"
print 'New 8'
--:r".\BI_STAMMDATEN_PROJECTS_IMPORT_SELECT.sql"
print 'New 9'
--:r".\BI_STAMMDATEN_PROJECTS_REVIEW.sql"
print 'New 10'
--:r".\BI_STAMMDATEN_PROJECTS_REVIEW_SELECT.sql"
print 'New 11'
--:r".\BI_STAMMDATEN_PROJECTS_USE.sql"
print 'New 12'
--:r".\BI_STAMMDATEN_PROJECTS_USE_SELECT.sql"
print 'New 13'
--:r".\TEMP_ARCCALC_PROCEDURES.sql"
print 'New 14'
--:r".\TBL_MASTERDATA_PROJECTS.sql"
print 'Change 15'
--:r".\BfxFctMasterGetOption.sql"
print 'New 1'
--:r".\convertDateToRnr.sql"
print 'New 2'
--:r".\getInvoiceDocName.sql"
print 'New 3'
--:r".\UTIL_convertToFloat.sql"
print 'New 4'
--:r".\BI_EPM_IMPORT_ERRORS.sql"
print 'New 5'
--:r".\BI_EPM_SAP_IMPORT.sql"
print 'New 6'

wie man sieht wiederhohlt er sich permanent

Code
01.
set anz=0  
02.
for /F "skip=1 tokens=1* delims=\" %%i in (%DIFFTOOL_PATH%\veraendert.txt) do call :count %%j 
03.
goto :weiter  
04.
:weiter 
05.
set anz=0  
06.
for /F "skip=3 tokens=1* delims=\" %%i in (%DIFFTOOL_PATH%\neu.txt) do call :zaehl %%j 
07.
goto :EOF 
08.
:count  
09.
set /a anz=%anz%+1  
10.
echo print 'Change %anz%' >> %HELP_PATH%\install_backend.sql  
11.
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql  
12.
goto :weiter  
13.
:zaehl 
14.
set /a anz=%anz%+1  
15.
echo print 'New %anz%' >> %HELP_PATH%\install_backend.sql 
16.
echo --:r".\%*" >> %HELP_PATH%\install_backend.sql  
17.
goto :EOF
Bitte warten ..
Mitglied: godlie
01.04.2009 um 16:10 Uhr
Verdammt ich habs ja gewusst da war noch ein Fehler:

Folgendes: und zwar in der Zeile 12 darf nciht goto:weiter stehen sondern da muss goto :EOF stehen.

Dann bekommst sowas raus:
01.
print 'Change 1'  
02.
--:r".\ACMConvertDate.sql"  
03.
print 'Change 2'  
04.
--:r".\BfxFctMasterGetOption.sql"  
05.
print 'Change 3'  
06.
--:r".\zZz.txt"  
07.
print 'Change 4'  
08.
--:r".\UTIL_getDatePart.sql"  
09.
print 'Change 5'  
10.
--:r".\UTIL_getFilename.sql"  
11.
print 'Change 6'  
12.
--:r".\UTIL_getErrorInfo.sql"  
13.
print 'New 1'  
14.
--:r".\BI_EPM_IMPORT_ERRORS.sql"  
15.
print 'New 2'  
16.
--:r".\BI_EPM_SAP_IMPORT.sql"  
17.
print 'New 3'  
18.
--:r".\BI_ERP_GET_SINGLE_FILENAME.sql"  
19.
print 'New 4'  
20.
--:r".\BI_STAMMDATEN_PROJECTS_IMPORT.sql" 
Bitte warten ..
Mitglied: Pantherstyle
02.04.2009 um 08:16 Uhr
Es funktioniert ich danke Dir! Jetzt muss ich nur noch herausklamüsern warum ;D
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst CMD: icacls in for-Schleife (2)

Frage von Lowrider614 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
gelöst For Schleife kaputt? (5)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

Frage von .Sessl zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...