2013-12-23 3 views
0

Как получить содержимое папки (включая пустые папки) для перемещения (не скопировано) в новую папку, исключая одну папку?Как переместить пустые папки и файлы в новую папку?

Я хочу переместить содержимое в папку Entity в мою недавно созданную папку 2013\November Estimates, которая находится в каждом объекте.

Макет папки 2013 \ 2 - Проекции ноября \ Фонд семья (32 из них, а также другой папка не касается) \ Entity (600 различных субъекты, уникальные для каждой семьи фонда)

Это текущая раскладка для каждого объекта:

Entity_01 
    Entity_01\2013 
    Entity_01\2013\November Estimates 
    Entity_01\entity.pdf 
    Entity_01\entity.xls 
    Entity_01\entity.doc 
    Entity_01\PY folder 
    Entity_01\Trash Folder 
    Entity_01\2012 

Таким образом, все файлы и папки будут перемещены в November Estimates но папка 2012 остается там, где она (продуцирующие следующую раскладку)

Entity_01 
Entity_01\2013 
Entity_01\2013\November Estimates 
Entity_01\2013\November Estimates\entity.pdf 
Entity_01\2013\November Estimates\entity.xls 
Entity_01\2013\November Estimates\entity.doc 
Entity_01\2013\November Estimates\PY folder 
Entity_01\2013\November Estimates\Trash Folder 
Entity_01\2012 

Проблемы со следующей командной строкой:

FOR /f "delims=" %%b IN (entitylist.txt) DO (
    pushd "%destdrive%:\%year%\%projections%\%%~a\%%~b\" && (
    for /d %%c in (*) do if /i not "%%c"=="2012" move "%%c" "%estimates%" 
    move *.* "%estimates%" 
    popd 
) 
    ) 

Полный BAT

@echo off 
setlocal 
SET "sourcedrive=Z" 
SET "destdrive=C" 
SET /a year=2013 
SET "projections=2 - November Projections" 
SET "Estimates=November Estimates" 
SET "Yearend=Year End Filings" 
DIR /b /ad "%sourcedrive%:\%year%\%projections%" >fundfamily.txt 
start /wait "Fund Family" C:\Windows\System32\notepad.exe "fundfamily.txt" 
FOR /f "delims=" %%a IN (fundfamily.txt) DO (
MD "%destdrive%:\%year%\%projections%\%%~a" 
DIR /b /ad "%sourcedrive%:\%year%\%projections%\%%~a" >entitylist.txt 
start /wait "%%~a entities" C:\Windows\System32\notepad.exe "entitylist.txt" 
FOR /f "delims=" %%b IN (entitylist.txt) DO MD "%destdrive%:\%year%\%projections%\%%~a\%%~b\%year%\%estimates%" 
FOR /f "delims=" %%b IN (entitylist.txt) DO MD "%destdrive%:\%year%\%projections%\%%~a\%%~b\%year%\%yearend%" 
FOR /f "delims=" %%b IN (entitylist.txt) DO MD "%destdrive%:\%year%\%projections%\%%~a\%%~b\2012" 
FOR /f "delims=" %%b IN (entitylist.txt) DO (
    pushd "%destdrive%:\%year%\%projections%\%%~a\%%~b\" && (
    for /d %%c in (*) do if /i not "%%c"=="2012" move "%%c" "%estimates%" 
    move *.* "%estimates%" 
    popd 
    ) 
) 
) 
+0

возможно дубликат [Переместить содержимое папки в новую папку] (HTTP: // StackOverflow .com/questions/20724181/move-contents-of-folder-in-new-folder) –

+0

/EXCLUDE не является параметром команды move. –

+0

@mihai_mandis любые предложения о том, как я буду исправлять это? даже без EXCLUDE, я все еще получаю ошибку, а не желаемые результаты. – StrayedMonkey

ответ

0

относительно линии, которая производит ошибку, если вы только одна папка, которую вы хотите, чтобы избежать перемещения, вы можете проверить, если папка для перемещения не один:

FOR /f "delims=" %%b IN (entitylist.txt) DO (
    if "%destdrive%:\%year%\%projections%\%%~a\%%~b\2012" NEQ "%%b" MOVE /Y "%destdrive%:\%year%\%projections%\%%~a\%%~b\%all%" "%destdrive%:\%year%\%projections%\%%~a\%%~b\%year%\%estimates%" 
) 
+0

Благодарим за помощь. К сожалению, я все еще получаю «синтаксис команды неправильный». Я редактирую оригинальную BAT с вашей настройкой выше. – StrayedMonkey

+0

Перемещение не имеет переключателя '/ e'. – foxidrive

+0

Извините, это должно быть/Y. Исправлено в коде. –

0

Попробуйте это в качестве последнего цикла, как вы будете нуждаться в петлю, чтобы переместить папки один на один, а другой запятой nd для перемещения файлов в основной папке.

Возможно, что-то подобное сделают это.

FOR /f "delims=" %%b IN (entitylist.txt) DO (
    pushd "%destdrive%:\%year%\%projections%\%%~a\%%~b\" && (
    for /d %%c in (*) do if /i not "%%c"=="2012" move "%%c" "%estimates%" 
    move *.* "%estimates%" 
    popd 
    ) 
) 

Это делает следующее (я собираюсь использовать фотографии, не знаю, почему я не думал об этом раньше ... -_-

CURRENT RESULTS: 

enter image description here enter image description here

DESIRED RESULTS: 

enter image description here enter image description here enter image description here

это в основном переименовывает папку 2013 в entity и перемещает все, за исключением 2012 года в эту папку, которая теперь имеет название November Estimates

+0

Спасибо. Это близко к макету. Я внес изменения в свой вопрос, используя ваш предложенный формат. – StrayedMonkey

+0

Поскольку у нас нет файлов 'fundfamily.txt' и' entitylist.txt', мы не можем воспроизвести ситуацию. Но см. Ответ выше. – foxidrive

+0

Эта строка изменяет 2013 год и переименовывает ее в Оценки в ноябре, затем помещает папки и документы в эту папку. см. выше для лучшей иллюстрации – StrayedMonkey

Смежные вопросы