PDA

Показать полную графическую версию : [решено] Перемещение файлов по списку в заданные директории


929151
15-11-2012, 13:41
Есть вот такой код. Он сканирует папку на наличие в ней файлов содержащих в названии текст icon и и перемещает в папку icon.
а нужно что он брал переменные из текстового файла filelist.txt
icon
cursor
wallpaper
...
и помещал найденные файлы в создаваемые одноименные директории

@echo off
set fol=icon
for %%i in (*%fol%*.*) do call:move "%%i"
goto:eof

:move
set /a folder+=1
md %fol%
move %1 %fol%

929151
15-11-2012, 17:13
разобрался
@echo off

for /F "delims=" %%a in (F:\test\test\FileList.txt) do (
md F:\test\test\"%%a"
move %1 "*%%a*.*" F:\test\test\"%%a"
)
как вот теперь сделать чтоб пустые папки не создавал

Iska
15-11-2012, 17:28
как вот теперь сделать чтоб пустые папки не создавал »
Хотите обходной путь? Пусть создаёт. После
move %1 "*%%a*.*" F:\test\test\"%%a" »
проверяйте наличие файлов в конечной папке, и, если она пуста — удаляйте её.

929151
15-11-2012, 18:33
сделал вот так
@echo off
for /F "delims=" %%a in (F:\test\test\FileList.txt) do (
md F:\test\test\"%%a"
move /Y %1 "*%%a*.*" F:\test\test\"%%a"
)
for /d %%i in ("F:\test\test\*") do rd /q "%%i" 2>nul
работает, но жаль только не учитывает что имена файлов в папках могут совпадать при последующем перемещении.

megaloman
16-11-2012, 01:56
Чтобы сразу не создавались пустые папки можно сделать так@echo off
Set Where=E:\Delete

for /F "delims=" %%a in (E:\Delete\FileList.txt) do (
If Exist "%Where%\*%%a*.*" (
md "E:\Delete\%%a" 2>nul
move /Y "%Where%\*%%a*.*" "E:\Delete\%%a\" >nul 2>nul
)
)




© OSzone.net 2001-2012