Hoe maak je een for-lus in de Windows-opdrachtregel?

Ik vroeg me af of dit mogelijk was? Ik ben niet bekend met het gebruik van de Windows-opdrachtregel, maar ik moet het gebruiken voor een project waaraan ik werk. Ik heb een aantal bestanden, waarvoor ik voor elk een functie moet uitvoeren. Ik ben gewend om met python te werken, maar dit is duidelijk een beetje anders, dus ik hoopte op wat hulp.

In principe heb ik de for-lus nodig om door 17 bestanden in een map te bladeren, op elk een functie uit te voeren (die de specifieke software gebruikt die ik hier voor het project heb) en dan zal dat een bestand met een unieke naam opleveren (de functie normaal gesproken moet ik de naam van het uitvoerbestand vermelden) Ik zou het opzuigen en het gewoon met de hand doen voor elk van de 17, maar in feite maakt het een database van een bestand en vergelijkt het vervolgens met elk van de 17. Het moet echter honderden keren herhaald worden. Het gebruik van een for-lus kan me dagen werk besparen.

Suggesties?


Antwoord 1, autoriteit 100%

De commandline-interpreter heeft inderdaad een FOR-constructie die u kunt gebruiken vanaf de opdrachtprompt of vanuit een batchbestand.

Voor uw doel wilt u waarschijnlijk zoiets als:

FOR %i IN (*.ext) DO my-function %i

Hierdoor wordt de naam van elk bestand met de extensie *.ext in de huidige map doorgegeven aan my-function (wat bijvoorbeeld een ander .bat-bestand kan zijn).

Het (*.ext)gedeelte is de “filespec”, en is behoorlijk flexibel met hoe je sets bestanden specificeert. U kunt bijvoorbeeld het volgende doen:

FOR %i IN (C:\Some\Other\Dir\*.ext) DO my-function %i

Een bewerking uitvoeren in een andere map.

Er zijn talloze opties voor de bestandsspecificatie en FOR in het algemeen. Zie

HELP FOR

vanaf de opdrachtprompt voor meer informatie.


Antwoord 2, autoriteit 11%

Hiermee kun je misschien vinden wat je zoekt…
Batchscript-lus

Mijn antwoord is als volgt:

@echo off
:start
set /a var+=1
if %var% EQU 100 goto end
:: Code you want to run goes here
goto start
:end
echo var has reached %var%.
pause
exit

De eerste reeks opdrachten onder het startlabel loopt door totdat een variabele, %var% 100 bereikt. Zodra dit gebeurt, wordt u hiervan op de hoogte gesteld en kunt u afsluiten. Deze code kan aan uw behoeften worden aangepast door de 100 in 17 te wijzigen en uw code in te voeren of een oproepopdracht te gebruiken gevolgd door het pad van het batchbestand (Shift+Rechtsklik op bestand en selecteer “Kopieer als pad”) waar de opmerking wordt geplaatst.


Antwoord 3, autoriteit 7%

U kunt ook overwegen "toe te voegen.

Bijvoorbeeld for %i in (*.wav) do opusenc "%~ni.wav" "%~ni.opus"is een heel goed idee.

Other episodes