Компьютерный форум 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=205917)

iphone1337 30-04-2011 22:07 1668218

Реорганизация папок. Торрент не видит. Нужен скриптик.
 
Сабж. Настигла такая проблема http://forum.oszone.net/showthread.p...90#post1668190
Посоветовали обратиться сюда,буду благодарен за помощь.


Подойдет примерно такой думаю
"Чтобы Искал папки в которых по одному файлу и переносил на категорию вверх. А папку удалял. и се это в одной папке DOWNLOADS"

Foreigner 30-04-2011 23:09 1668253

iphone1337,
Я правильно понял что все торрент-файл раскиданы по одноименным папкам, и теперь их необходимо вернуть в папку Dowloads? Которая служит корневой папкой?
Код:

@echo off

pushd "D:\Downloads"

for /f "tokens=*" %%i in (' dir /b /s *.torrent ') do (

    move "%%i"
    rd /s /q "%%~dpi"

)

popd


iphone1337 30-04-2011 23:20 1668261

Нет,увы,неправильно(.
Есть папка E:\Downloads . Она основная куда торрент клиент все скачивал.
Если в торренте несколько файлов то создавалась папка_Имя_торрента/тут файлы торрента
Если в торренте 1 файл,то он просто скачивался в E:\Downloads
Но после ОБРАботки сторонней тупой программой,в папке E:\Downloads все одиночные файлы фильмов(разные форматы) теперь лежат каждый в отдельной папке(новые создались. )
Мне нужно чтобы Скрипт,проверил каждую папку. И папки,в которых всего 1 файл ->Этот файл переместить в E:\Downloads а саму папку удалить. Надеюсь понятно объяснил. Спасибо





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

kiripanda 01-05-2011 01:09 1668306

Перемещение файлов на уровень вверх

Foreigner 01-05-2011 08:20 1668338

Код:

@echo off
setlocal

pushd e:\downloads

for /d %%i in (*) do call:check "%%i"
popd
goto:eof

:check
for /f %%i in (' dir /b %1 ') do set /a cnt+=1
if %cnt% equ 1 move "%~1\*" && rd /s /q %1
set "cnt="


iphone1337 01-05-2011 11:00 1668369

Foreigner, Вот что выдало

Foreigner 01-05-2011 11:48 1668384

Значит есть пустые папки?
Код:

@echo off
setlocal

set "cnt=0"
pushd e:\downloads

for /d %%i in (*) do call:check "%%i"
popd
goto:eof

:check
for /f %%i in (' dir /b %1 ') do set /a cnt+=1
if %cnt% equ 1 move "%~1\*" && rd /s /q %1
set "cnt=0"


iphone1337 01-05-2011 13:42 1668422

В основном правильно перемещает,но такую ошибку стал выдавать [/quote]
Никак не выходит закончить перемещение. Постоянно эта ошибка.
Подскажите пожалуйста,как исправить?

Foreigner 01-05-2011 14:12 1668435

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

kiripanda 01-05-2011 14:44 1668447

[telepat mode]
В названии папки/файла спецсимвол
[/telepat mode]

Foreigner
А почему move с одним аргументом? Назначение не нужно указывать?

Foreigner 01-05-2011 15:20 1668464

Цитата:

Цитата kiripanda
А почему move с одним аргументом? Назначение не нужно указывать? »

Если назначение текущая папка, то можно и не указывать.


Время: 00:30.

Время: 00:30.
© OSzone.net 2001-