Команда DOS для перемещения всех файлов из всех подкаталогов в одну папку - PullRequest
0 голосов
/ 03 октября 2011

Я хочу написать 2 пакетных файла.

первый:

переместить все файлы в подкаталогах в корневой каталог. например:

Folder1
|_folder2
|___files.jpg
|_folder3
|___files.jpg

Я хочу переместить все файлы из папок папки 1 в папку 1


2-й пакетный файл например:

Folder1
|_folder2
|___JPEG
|_____files.jpg
|_folder3
|___JPEG
|_____files.jpg

Необходимо удалить все файлы в подпапке, затем переместить файлы из JPEG на один уровень вверх, например, в папку 2, и переименовать его, например, в thumbnail.png.

я попробовал

for /r %%f in (*) do ren "%%f" thumbnail.jpg 

чтобы переименовать все файлы, но вы не знаете, как удалить все файлы в той же папке, которые содержат папку jpeg, и как переместить файлы на один уровень вверх.

Спасибо: D надеюсь, что это не очень сложный

1 Ответ

1 голос
/ 03 октября 2011

Вот решение вашего первого вопроса, насколько я понимаю:

@echo off
setlocal
set root=Folder1
for /f "delims=" %%f in ('dir /ad /b /s %root%') do @move "%%f\*.*" %root%
endlocal

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

Для вашей второй проблемы попробуйте аналогичный подход, но с

dir /a-d /b

для вывода списка всех записей, которые не являются подкаталогами (например, пропустить JPEG). Это позволит вам создать оператор for , который выполняет удаление, а затем выполнить другой оператор, который выполняет перемещение и переименование.

Возможно, вы захотите взглянуть на вызов подпрограммы для перемещения, переименования, удаления. Затем вы можете манипулировать именем файла, чтобы изменить имя. Я немного запутался в том, что именно вы хотите сделать во втором случае. Также посмотрите справку по командам set и call , если вы не уверены в извлечении имени файла и других манипуляциях со строками.

Если вы добавите комментарии или отредактируете свой вопрос, чтобы показать, что именно вы хотите, тогда я буду рад помочь вам в дальнейшем.

...