Как скопировать несколько папок в другой путь с помощью командного файла? - PullRequest
0 голосов
/ 22 апреля 2011

Как заставить его пройти через определенные папки (например, 1-8 на диске E :) и их деревья и скопировать их на F: в командном файле (мой не работает):

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% 

Ответы [ 2 ]

0 голосов
/ 22 апреля 2011

Вы пытаетесь установить и повторно использовать переменную среды в цикле.Это не может работать, поскольку cmd раскрывает все переменные окружения при разборе команды, а не при ее выполнении.Поэтому вам нужно включить отложенное расширение:

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! 
  )
)

(вам также не хватало нескольких закрывающих скобок, я добавил их для вас)

Но вы также можете использовать %%a.Он все еще должен существовать во внутреннем цикле ...

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 
  )
)
0 голосов
/ 22 апреля 2011

Я думаю, что синтаксис, который вы хотите, это

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