2015-07-25 4 views
0

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


Чтобы положить вещи в перспективе, дерево каталогов выглядит примерно так:

  • \Panasonic
    • \PRG00A
    • \PRG00B
    • ...
    • \PRG069

Panasonic находится внутри кучи папок, следовательно, почему я хотел бы поставить свой командный файл вместе с \Panasonic. И пусть он работает относительно своего местоположения.


Поэтому в основном я хочу, чтобы создать пакетный файл move.bat, который должен пройти через подкаталоги \Panasonic и перемещать любые видео файлы (с расширением .MOD, чтобы упростить вещи), а затем удалить родительский каталог (например, \PRG00B) ,

Результатом будет то, что каталог \Panasonic включает только видеофайлы вместо подкаталогов с кучей мусора.


То, что я получил до сих пор (имейте в виду, что это моя первая партия сценарий, и я даже не проверял полностью). Кстати, выбор продолжать не работает. Не знаю, почему.

@echo off 
cls 
set dirName=%~dp0Panasonic 
goto question 

:start 
goto move 
goto end 

:move 
for /D %%G in ("%cd%") do (
    for %%I in ("%%G") do (
     if %%I equ "*.MOD" (
      move /Y %%I %dirName% 
     ) 
    ) 
    rmdir /s /q %%G 
) 

:end 
echo Done. 
pause 
endlocal 
exit 

:question 
set /P c="Are you sure you want to proceed with moving video files from %dirName%? [Y/N]" 
if /I %c% equ 'y' (
    echo Moving files... 
    goto start 
) else (
    goto end 
) 

Еще раз, это мой первый раз, создав пакетный файл, так что любая помощь очень ценится!

+0

Ваш выбор не работает, потому что вы сравниваете свой вход (возможно, симе «y» (один символ) со строкой '' y'' (три символа). Лучше использовать 'if/i '% c%" equ «y» («(или используйте соответствующую команду, посмотрите на« выбор /? »). Остальное уже хорошо объяснено PA. – Stephan

+0

Я даже не заметил одиночные кавычки, спасибо за указание. – Nikita

ответ

1

вы почти там, но вам просто нужно исправить пару вещей, очень легко исправить, на самом деле вам просто нужно упростить свой код.

Просто в трех простых шаге

Шаг 1. Цикла по всем каталогам вы уже имели это право, ваш друг for /d

for /d %%a in (*) do echo %%a 

Шаг 2. Для того, чтобы переместить все .mod файлов в каждом найденных каталогов, в его родительский каталог или один каталог в иерархии, который является текущим каталогом, вам просто нужно

move %%a\*.mod . 

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

Шаг 3. И, наконец, удалить каталог,

rd %%a 

, но не использовать /s, поэтому он будет работать это только каталог пуст, то есть, если вы успешно перемещены из всех файлов, которые он содержал. Таким образом, вы можете просмотреть их, чтобы посмотреть, что осталось, не теряя данных.

Итак, ваш moveupallmod.bat становится просто

@echo off 
for /d %%a in (*) do (
    move "%%a\*.mod" . 
    rd "%%a" 
) 

и это все!

+0

Большое спасибо. – Nikita

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