Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: Pantherstyle

Pantherstyle (Level 1) - Jetzt verbinden

01.04.2009, aktualisiert 09:47 Uhr, 3662 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 ..
Ähnliche Inhalte
Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Batch & Shell

FOR Schleife mit LOOP und nachfolgender FOR Schleife

gelöst Frage von miczarBatch & Shell6 Kommentare

Hallo zusammen, ich habe ein Problem mit einem Batchfile. Situation: im Netzwerk ist kein WINS mehr vorhanden und so ...

Batch & Shell

FOR Schleife läuft nicht

gelöst Frage von sugramBatch & Shell4 Kommentare

Hallo Ich glaube ich sehe den Wald vor lauter Bäumen nicht. Aber ich bekomme die FOR Schleife nicht zum ...

Batch & Shell

For Schleife kaputt?

gelöst Frage von Peter32Batch & Shell5 Kommentare

Hallo, ich finde den Fehler nicht irgendwie bekomme ich ständig denselben Inhalt in "Name.txt" und kann dann nicht weiterarbeiten ...

Neue Wissensbeiträge
Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 3 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 7 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 2 TagenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Heiß diskutierte Inhalte
C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++33 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Batch & Shell
Powershell: Im AD nach Comutern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell21 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
Frage von Bommi1961Batch & Shell20 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...