windows - Hvordan kopierer jeg flere mapper til en anden sti med en batchfil?

Indlæg af Hanne Mølgaard Plasc

Problem



Sådan gøres det gennem bestemte mapper (ex 1-8 på drevet E :) og deres træer og kopier dem på F: i batchfilen (det virker ikke):


set drive=E:
for \%\%a in (1,2,3,4,5,6,7,8) do (
  set folder=\%\%a
   for /R "\%drive\%\%\%a" \%\%b in (*) do (
        copy "\%\%b" \%drive\%\%folder\% 

Bedste reference


Jeg tror, ​​at syntaksen du vil have er


for \%\%F in (1 2 3 4 5 6 7 8) do (
    xcopy /e e:\%\%F  f:
)

Andre referencer 1


Du forsøger at indstille og genbruge en miljøvariabel i en loop. Dette kan ikke fungere siden cmd udvider alle miljøvariabler, når parsing en kommando, ikke når du kører den. Så du skal aktivere forsinket ekspansion:


setlocal enabledelayedexpansion
set drive=E:
for \%\%a in (1,2,3,4,5,6,7,8) do (
  set folder=\%\%a
  for /R "\%drive\%\%\%a" \%\%b in (*) do (
    copy "\%\%b" \%drive\%!folder! 
  )
)


(du manglede også et par lukkede parenteser, jeg tilføjede dem til dig)


Men du kan lige så godt bruge \%\%a. Det skulle stadig eksistere i den indre loop ...


set drive=E:
for \%\%a in (1,2,3,4,5,6,7,8) do (
  for /R "\%drive\%\%\%a" \%\%b in (*) do (
    copy "\%\%b" \%drive\%\%\%a 
  )
)