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

Frage Entwicklung Batch & Shell

GELÖST

Durchlaufzähler in for-Schleife

Mitglied: Pantherstyle

Pantherstyle (Level 1) - Jetzt verbinden

01.04.2009, aktualisiert 09:47 Uhr, 3645 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
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 6 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 13 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 17 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...