windows - Iterate specifikke filer i mappen via .bat

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at lave bat-fil til at gentage throuth kun filer i mappen, hvilke filnavne begynder med specifikt ord.
For eksempel:

firmanavn .module1.exe

companyName .module2.dll


Jeg ved, hvordan man kan iterere filer, men ved ikke, hvordan man kan kontrollere deres navne til en bestemt tilstand.

Bedste reference


Tilføj følgende til din batchfil:


for /F "eol=: tokens=*" \%\%A in ('dir /A-D /B "companyName*"') do (echo \%\%~fA)


Dette script vil echo alle filer (kun filer), der begynder med companyName præfikset i den aktuelle arbejdsmappe. Udskift echo med enhver anden kommando eller kommandoer, du vil udføre i stedet.


Opdater 1 : For at kunne se i en anden mappe kan du enten


for /F "eol=: tokens=*" \%\%A in ('dir /A-D /B "pathToLookIn/companyName*"') do (echo \%\%~fA)


eller


pushd  & cd "pathToLookIn" & (for /F "eol=: tokens=*" \%\%A in ('dir /A-D /B "companyName*"') do (echo \%\%~fA)) & popd


Hvor pathToLookIn er en fuldt kvalificeret eller relativ vej.


Opdater 2 : Jeg har opdateret for /F -sløjfen for at håndtere filnavne, der begynder med ; som @dbenham foreslog.

Andre referencer 1


Nå, hvis du ved, hvordan man gentager filer, så brug kun den viden:


for \%\%f in (companyName*) do (
  ...
)


Bemærk at iterering over udgangen af ​​dir er fejlagtigt og vil mangle Unicode-tegn i mange tilfælde. Da for er i stand til iteration direkte, er der sjældent et behov for at bruge en ringere mulighed.