Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Перемещение файлов по списку в заданные директории (http://forum.oszone.net/showthread.php?t=247003)

929151 15-11-2012 13:41 2026029

Перемещение файлов по списку в заданные директории
 
Есть вот такой код. Он сканирует папку на наличие в ней файлов содержащих в названии текст 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 2026206

разобрался
Код:

@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 2026221

Цитата:

Цитата 929151
как вот теперь сделать чтоб пустые папки не создавал »

Хотите обходной путь? Пусть создаёт. После
Цитата:

Цитата 929151
Код:

move %1 "*%%a*.*" F:\test\test\"%%a"
»

проверяйте наличие файлов в конечной папке, и, если она пуста — удаляйте её.

929151 15-11-2012 18:33 2026284

сделал вот так
Код:

@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 2026588

Чтобы сразу не создавались пустые папки можно сделать так
Код:

@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
        )
)



Время: 04:06.

Время: 04:06.
© OSzone.net 2001-