Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Zähler in FOR Schleife als Parameter für Funktionsaufruf

Frage Entwicklung Batch & Shell

Mitglied: robx

robx (Level 1) - Jetzt verbinden

20.08.2014, aktualisiert 18:58 Uhr, 1107 Aufrufe, 11 Kommentare, 2 Danke

Hallo,
ich will in einer FOR Schleife eine Funktion aufrufen, 1. Parameter soll ein Zähler sein, der sich jeweils um 1 erhöht.
Bislang habe ich dies:
01.
@echo off setlocal enabledelayedexpansion 
02.
set a=<Pfad01> 
03.
set b=<Pfad02> 
04.
set c=<Pfad03> 
05.
set PARAM3="/XD D:\test\QuellV\test2" 
06.
set PARAM4="D:\test\ZielV" 
07.
FOR %%i IN (%a% %b% %c%) DO set /A m=m+1 & ('CALL :DEMO !m! %%i %PARAM3% %PARAM4%') 
08.
:DEMO 
09.
... 
10.
goto :eof
Ich wäre für einen Tip sehr dankbar.
Gruß,
Rob
Mitglied: bastla
20.08.2014 um 19:07 Uhr
Hallo robx!

Wird's mit
01.
@echo off & setlocal enabledelayedexpansion 
02.
set a=<Pfad01> 
03.
set b=<Pfad02> 
04.
set c=<Pfad03> 
05.
set PARAM3="/XD D:\test\QuellV\test2" 
06.
set PARAM4="D:\test\ZielV" 
07.
FOR %%i IN (%a% %b% %c%) DO set /A m+=1 & CALL :DEMO !m! %%i %PARAM3% %PARAM4% 
08.
goto :eof 
09.
 
10.
:DEMO 
11.
... 
12.
goto :eof
besser? Alternativ dazu könntest Du auch den Zähler einfach in ":DEMO" erhöhen und brauchst ihn dann nicht zu übergeben / kannst "delayedExpansion" einsparen:
01.
@echo off & setlocal 
02.
set a=<Pfad01> 
03.
set b=<Pfad02> 
04.
set c=<Pfad03> 
05.
set PARAM3="/XD D:\test\QuellV\test2" 
06.
set PARAM4="D:\test\ZielV" 
07.
FOR %%i IN (%a% %b% %c%) DO CALL :DEMO %%i %PARAM3% %PARAM4% 
08.
goto :eof 
09.
 
10.
:DEMO 
11.
set /A m+=1 
12.
... 
13.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: robx
20.08.2014, aktualisiert um 19:30 Uhr
Hallo bastla,
danke für Deine schnelle Unterstützung!
ich würd gern bei Variante 1 bleiben, um "Zähler in Schleife" zu lernen.

Es wird beim Funktionsaufruf "!m!" nicht aufgelöst.
01.
 ...>echo !m! 
02.
!m!
Hast Du noch einen Tip ?

Gruß, Rob
Bitte warten ..
Mitglied: bastla
LÖSUNG 20.08.2014, aktualisiert 22.08.2014
Hallo robx!

Sorry - kann ich nicht nachvollziehen ...
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "a=Pfad01" 
03.
set "b=Pfad02" 
04.
set "c=Pfad03" 
05.
set PARAM3="/XD D:\test\QuellV\test2" 
06.
set PARAM4="D:\test\ZielV" 
07.
FOR %%i IN ("%a%" "%b%" "%c%") DO set /A m+=1 & CALL :DEMO !m! %%i %PARAM3% %PARAM4% 
08.
goto :eof 
09.
 
10.
:DEMO 
11.
echo %* 
12.
goto :eof
erzeugt bei mir folgende Ausgabe:
1 "Pfad01" "/XD D:\test\QuellV\test2" "D:\test\ZielV" 
2 "Pfad02" "/XD D:\test\QuellV\test2" "D:\test\ZielV" 
3 "Pfad03" "/XD D:\test\QuellV\test2" "D:\test\ZielV"
Die Anführungszeichen um die einzelnen Pfade ("%a%" etc) sind nur erforderlich, wenn in den Pfadangaben Leer- oder bestimmte Sonderzeichen enthalten sind (schaden aber auch nicht) ...

Grüße
bastla
Bitte warten ..
Mitglied: robx
20.08.2014 um 19:46 Uhr
Hallo bastla,
sorry, bin wohl etwas unklar.
die Pfade klappen als Ausgabe, aber der Zähler "m" nicht.
01.
FOR %%i IN ("%a%" "%b%" "%c%") DO set /A m+=1 & CALL :DEMO !m! %%i %PARAM3% %PARAM4% 
01.
 FOR %%i IN ("%a%" "%b%" "%c%") DO set /A m+=1 & CALL :DEMO %%m %%i %PARAM3% %PARAM4% 
Beides klappt nicht.
Gruß, Rob
Bitte warten ..
Mitglied: bastla
20.08.2014, aktualisiert um 19:49 Uhr
Hallo robx!

Der Hinweis auf die Pfade war nur Zugabe ...

Hast Du meinen Ansatz (Code) getestet?

Grüße
bastla
Bitte warten ..
Mitglied: robx
20.08.2014 um 19:59 Uhr
noch mal sorry, Dein Code klappt prima.

Hast Du noch einen letzten ! Tip für Leerzeichen in den Pfaden -
oder neue Frage ?

01.
 @echo off & setlocal enabledelayedexpansion 
02.
 
03.
set "a=D:\Eigene Dateien\d" 
04.
set "b=D:\Eigene Dateien\K" 
05.
set "c=D:\Eigene Dateien\P" 
06.
 
07.
set PARAM3="/XD D:\test\QuellV\test2" 
08.
set PARAM4="D:\test\ZielV" 
09.
FOR %%i IN (%a% %b% %c% %d% %e% %f%) DO set /A m+=1 & CALL :DEMO !m! %%i %PARAM3% %PARAM4% 
10.
goto :eof 
11.
 
12.
:DEMO 
13.
echo %* 
14.
pause 
15.
goto :eof
Gruß, Rob
Bitte warten ..
Mitglied: bastla
20.08.2014 um 20:03 Uhr
Hallo robx!
Hast Du noch einen letzten ! Tip für Leerzeichen in den Pfaden
Den gab's ja schon oben ...

Grüße
bastla
Bitte warten ..
Mitglied: robx
20.08.2014, aktualisiert um 20:15 Uhr
Hallo bastla,

klasse !

Danke noch mal für Deine sehr gute und schnelle Unterstützung !

Gruß, Rob
Bitte warten ..
Mitglied: bastla
20.08.2014 um 20:14 Uhr
Hallo robx!
trotz Anführungszeichen.
In Deinem Code hast Du in Zeile 9 (im Gegensatz zu meiner Zeile 7 oben) keine Anführungszeichen verwendet ...

Grüße
bastla
Bitte warten ..
Mitglied: WinCobold
21.08.2014 um 16:43 Uhr
Hallo Rob,

unabhängig von all den anderen Beiträgen: Das ursprüngliche Problem war wohl, dass das & vor setlocal gefehlt hat, und dann ist das eben kein eigener Befehl, sondern nur ein Anhängsel des echo.

Ich versuche daher, möglichst nie mehrere Befehle in eine Zeile zu schreiben, dann kann so etwas nicht so leicht passieren.

Gruß vom WinCobold
Bitte warten ..
Mitglied: robx
22.08.2014 um 10:53 Uhr
Hallo WinCobold,

ich bin grad völlig perplex -
Du hast Recht.

Danke für den Hinweis und den Rat !
Werd ich beherzigen.

Gruß, Rob
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Verschachtelte FOR-Schleife mit einem Argument (3)

Frage von mp-home zum Thema Batch & Shell ...

Batch & Shell
gelöst Fehler in Schleife (2)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst New-ADUser (optional Parameter) (13)

Frage von mc-doubleyou zum Thema Batch & Shell ...

Batch & Shell
gelöst Parameter für plink-Aufruf (4)

Frage von trobonarf zum Thema Batch & Shell ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (14)

Frage von ZeroCool23 zum Thema Windows 10 ...

Router & Routing
gelöst Getrenntes Routing bei VoIP und Daten (12)

Frage von Hobbystern zum Thema Router & Routing ...