windows - .bat-fil til omdøbning af flere mapper

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at skrive et batch script til at omdøbe flere mapper.
Jeg vil gerne gøre noget som nedenfor:
Omdøb alle mapper under mappen 'Workspace' ved at tilføje mit navn i slutningen af ​​mappens navne


For eksempel omdøb:


Workspace/RiskFolder
Workspace/PNLFolder


til:


Workspace/RiskFolder\_myname
Workspace/PNLFolder\_myname


Er dette muligt?

Bedste reference


Du kan bruge til at løbe gennem hver mappe og omdøbe den som sådan:


for /D \%\%f in (C:path	oWorkspace*) do rename "\%\%f" "\%\%~nxf\_myname"


Jeg testede dette på Windows 7, men det skulle fungere mindst lige så langt tilbage som i Windows XP.


Hvad det gør er dette: For hver mappe i stien (inden parentes), tildel bibliotekets navn til variablen \%\%f, og omdøb derefter mappen \%\%f til navnet i det ønskede format (med din navn vedhæftet). \%\%f har det fulde stinavn, hvilket er fint for det første argument til kommandoen rename, men for det andet argument ønsker vi kun filnavnet + udvidelsen, således at ~ nx-modifikatoren er prepended til vores variabelnavn .


Undervejs, når du bruger denne for sløjfe på kommandolinjen (i stedet for en del af en batchfil), vil du kun bruge en\% i stedet for \%\% til dit variabelnavn. F.eks. for \%f in... i stedet for ovenfor.


Se følgende referencer fra Microsoft for flere detaljer:



  • http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true

  • http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx?mfr=true


Andre referencer 1


Du kan bruge følgende kommando i din batchfil: - [20] [21]


for /F "usebackq tokens=*" \%\%a in (`dir /ad /b \%1`) do ren \%1\%\%a \%\%a\%2


Dette er kommandoen DOS 'for', som gentager over det givne sæt af elementer, og for hvert element i sættet udføres den givne handling. For det givne krav skal vi gøre følgende: -


1) Accepter navn på mappe, der indeholder undermapper, der skal omdøbe (i dit eksempel er det Workspace).


2) Accepter den streng, der skal vedhæftes til enden (i dit eksempel er det dit navn).


3) Angiv navnene på undermapper i mappen.


4) Omdøb ved at tilføje strengen til originalt navn.


Lad os se, hvordan dette for kommando opnår det. Formatet af 'for' kommando brugt her er: -


for /F ["options"] \%variable IN (`command`) do command [command-parameters]


Kommandoen her antager, at det krævede overordnede katalognavn og den streng, der skal tilføjes, sendes videre som kommandolinjeparametre. Disse er repræsenteret af\% 1 og\% 2 (første og andet parametre).


For at gøre det muligt for os at udstede en dos-kommando, der skal evalueres, skal vi bruge indstillingen/F. Optionsstrengen er: -


"usebackq tokens=*"



  • usebackq angiver tilbagekaldt streng er en kommando, der skal evalueres. (Bemærk at kommandoen dir er indeholdt i backquotes (`))

  • tokens=* betyder at overveje hver linje som et enkelt token og send til kommandoen



For at liste underkatalogerne i overordnet mappe bruger vi kommandoen: -


dir /ad /b \%1



  • /annonce viser kun mapper (ignorerer filer)

  • /b viser det i bare format, dvs. kun navne returneres og dato, tid og anden info er ikke.

  • \% 1 er kommandolinjevariablen, der henviser til overordnet mappe.

  • \%\% a er variablen, der modtager underkatalognavnet i hver iteration. Dobbeltheds-symbol er påkrævet, da vi bruger det i en batchfil, ellers kræves kun en (som\% a)



Endelig angiver vi den handling, der skal udføres: -


ren \%1\%\%a \%\%a\%2



  • \% 1 \ \%\% a konstruerer absolut vej til underkatalog

  • \%\% a\% 2 tilføjer anden kommandolinjeparameter til originalnavn



For mere information om for kommando, skriv følgende i en kommandoprompt: -


for /?


For et andet brugseksempel, se Loopy loops: DOS-måden [22]

Andre referencer 2


Intet behov for en batch-fil. Dette vil fungere fra kommandolinjen


for /d \%D in ("Workspace*") do ren "\%D" "\%~nxD\_myName"


Hvis du bruger en batchfil, skal \%D blive \%\%D

Andre referencer 3


Hvis der ikke er behov for at udføre mappe/fil omdøbning med en batchfil, kan du også bruge Bulk Rename Utility til Windows. Tjek dette: http://www.bulkrenameutility.co.uk/Download.php[23]

Andre referencer 4


For /D \%\%f in (*) do rename "\%\%f"  "\%\%fWhatEverNameYouLike"
pause


Pause er at se det! Lav en cmd af den og læg den i den mappe, du vil omdøbe alle sine undermapper! De skal omdøbe til hver enkelt mappes navn, plus WhatEverNameYouLike