2015-12-13 2 views
0

Я хочу переместить все файлы из структуры папок на один шаг вверх, возможно ли это с пакетом в среде Windows?Пакетное перемещение всех файлов из папки в каждую свою подпапку

Пример:

У меня есть 4 папки

Folder1/subfolder1/*here are files* 
Folder2/subfolder2/*here are files* 
Folder3/subfolder3/*here are files* 
Folder4/subfolder4/*here are files* 

Результат будет выглядеть так:

Folder1/*here are files*/subfolder1/ 
Folder2/*here are files*/subfolder2/ 
Folder3/*here are files*/subfolder3/ 
Folder4/*here are files*/subfolder4/ 

Возможно ли это? с партией? Есть идеи? Спасибо!

ответ

0

Поместите этот пакетный файл на том же уровне, Folder1 Folder2, ...

@echo off 

rem For each folder i.e. "Folder1", "Folder2", ... 
for /D %%a in (*) do (

    rem For each subfolder in this folder i.e. "subfolder1" 
    for /D %%b in ("%%a\*") do (

     rem Move the files 
     move "%%b\*.*" "%%a" 

    ) 
) 
0

Предполагая, что это на компьютере с Windows.

В командной строке, ниже команда будет перемещать файлы из subfolder1 в Folder1

C:\Folder1\subfolder1>move *.* ..\ 

Для получения дополнительной помощи использования на команде двигаться, используйте следующую команду ...

C:\Folder1\subfolder1>move /? 

Спасибо, Надеюсь, это поможет!

+0

Что-то вроде этого да! Но как это сделать для более чем 1 папки, и не нужно вводить точные пути к папке? Благодаря! –

+0

Если u start/w «Folder1», и переместите все файлы в каждой подпапке в корень «Folder1», вы получите больше папок из перемещенных данных, и оно будет продолжаться до тех пор, пока не будет опустошена каждая папка в папке «Folder1». Чтобы преодолеть это, вначале вы можете переименовать все папки и префикс идентификатора. Затем в цикле, если папка является одной из исходных папок, cd в нее, переместите данные на один уровень вверх. И затем cd .. вернитесь к «Folder1». И продолжайте цикл. Вы можете найти обучающие программы для пакетного сценария, чтобы сделать это онлайн. Вот одна такая ссылка из wikibooks: https://en.wikibooks.org/wiki/Windows_Batch_Scripting –

0

Ваш вопрос не совсем ясен. В итоге subfolder1 a в подкатегории /*here are files*/? Какая платформа?

Если вы только что говорили о перемещении файлов, на Unix, то вы можете сделать (в Баш):

mv Folder1/*/* Folder1 

Или перебирать каждую папку, вы можете сделать:

for f in * 
do 
    mv "$f/*/* $f" 
done 

Это содержимое будет опущено каждые subfolderX и переместит его на один шаг.

Если вы хотите перемещать файлы, посмотрите на команду find для фильтрации файлов.

+0

Извините, если мой вопрос был неопределенным, я нахожусь на компьютере с Windows, я пытаюсь сделать то, что вы описали во второй части своей сообщение в пакетном/cmd –

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