Перемещение всех файлов из МНОГИХ папок на один уровень вверх - командная строка - PullRequest
0 голосов
/ 05 марта 2012

У меня есть десятки тысяч *.wav файлов, распределенных по сотням папок. Мне нужна помощь, чтобы получить командную строку для перемещения всех файлов на один уровень. Структура каталогов для всех этих файлов идентична, но имена папок немного различаются:

Z:. \ Audio \ Уровень * \ история * \ Vocab \ * .WAV

Все файлы находятся в папках VOCAB, и мне нужно переместить их в папки story*:

Z:. \ Audio \ Уровень * \ история * \ * .WAV

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

Примечания: * Уровень * и история * - это номера 01-24.
Я на Windows XP Professional.

Спасибо за любую помощь, которую вы можете оказать!

Ответы [ 2 ]

1 голос
/ 05 марта 2012

попробуйте что-то вроде:

for /r %F in (*.wav) do move %F %~pF\..

обратитесь к for /? из командной строки в качестве ссылки (особенно в случае, если я не 'кодировал', что совершенно верно ...)

Я предлагаю запустить его из каталога \Audio.

0 голосов
/ 05 марта 2012

Нашел похожий вопрос на другом форуме (http://www.computerhope.com/forum/index.php/topic,98046.0/all.html).

Модифицируя часть их кода, вот сценарий пакетного файла, который может помочь (пожалуйста, попробуйте небольшое подмножество, прежде чем использовать его на всех):

@echo off
set thisdir=%cd%
for /f "delims=" %%A in ('dir /b /ad') do (
    cd /d "%%~dpnA"
    for /f "delims=" %%B in ('dir /b /ad') do (
        echo Level 2 Directory: %%~dpnB
        cd /d "%%~dpnB"
        for /f "delims=" %%C in ('dir /b /ad') do (
            echo Level 3 Directory: %%~dpnC
            cd /d "%%~dpnC"
            move *.* ..\
            cd ..
            rd "%%~dpnC"
        )
        cd ..
    )
    cd..
)
cd /d "%thisdir%
...