2014-01-10 6 views
0

Я написал себе сценарий, основанный на другом, который я нашел, и мне трудно понять, почему он не работает.uTorrent Batch Script

Как это должно работать, как только торрент закончил загрузку, он запускает сценарий и захватывает ярлык на торренте. Для тестирования я загружал песню с лейблом Music. Когда он дойдет до точки: copyfile, он не переместит его в правильный каталог. Вместо того, чтобы переходить в F: \ Completed Torrents \ Music, он просто переходит в F: \ Completed Torrents.

Может кто-нибудь, пожалуйста, укажет, что мне не хватает, потому что я просмотрел его уже трижды, и это сводит меня с ума. Скрипт ниже.

@echo off 
title Liam's torrent-file script 
rem Parameter usage: fromdir torrent-name label kind [filename] 
rem corresponds to uTorrents flags: %D %N %L %K %F 
echo ********************************************* 
echo Run on %date% at %time% 

set fromdir=%1 
set name=%2 
set label=%3 
set kind=%4 
set filename=%5 
set savepartition="F:\Completed Torrents" 
set winrar="C:\Program Files (x86)\WinRAR\WinRAR.exe" 
set torrentlog="F:\Torrent Scripts\logs\torrentlog.txt" 
set handledlog="F:\Torrent Scripts\logs\handled_torrents.txt" 
set errorlog="F:\Torrent Scripts\logs\ErrorLog.txt" 
set label_prefix="" 

echo Input: %fromdir% %name% %label% %kind% %filename% 

rem Check if the label has a sub label by searching for \ 
if x%label:\=%==x%label% goto skipsublabel 
rem Has a sub label so split into prefix and suffix so we can process properly later 
echo sub label 
for /f "tokens=1,2 delims=\ " %%a in ("%label%") do set label_prefix=%%a&set label_suffix=%%b 
rem add the removed quote mark 
set label_prefix=%label_prefix%" 
set label_suffix="%label_suffix% 
echo.prefix : %label_prefix% 
echo.suffix : %label_suffix% 
goto:startprocess 

:skipsublabel 
echo Skipped Sub Label 
goto:startprocess 

:startprocess 
echo %date% at %time%: Handling %label% torrent %name% >> %handledlog% 

rem Process the label 
if %label%=="Movies" goto known 
if %label%=="Music" goto known 
if %label_prefix%=="TV" goto TV 


rem Last resort 
rem Double underscores so the folders are easier to spot (listed on top in explorer) 
echo Last Resort 
set todir=%savepartition%\Unsorted\__%name% 
if %kind%=="single" goto copyfile 
if %kind%=="multi" goto copyall 
GOTO:EOF 

:known 
echo **Known Download Type - %label% 
set todir=%savepartition%\%label%\%name% 
echo todir = %todir% 
GOTO:process 

:TV 
echo **Known Download Type - %label% 
set todir=%savepartition%\%label_prefix%\%label_suffix% 
echo todir = %todir% 
GOTO:process 

:process 
rem If there are rar files in the folder, extract them. 
rem If there are mkvs, copy them. Check for rars first in case there is a sample.mkv, then we want the rars 
if %kind%=="single" goto copyfile 
if exist %fromdir%\*.rar goto extractrar 
if exist %fromdir%\*.mkv goto copymkvs 
if %kind%=="multi" goto copyall 
echo Guess we didnt find anything 
GOTO:EOF 

:copyall 
echo **Type unidentified so copying all 
echo Copy all contents of %fromdir% to %todir% 
xcopy %fromdir%\*.* %todir% /S /I /Y 
GOTO:EOF 

:copyfile 
rem Copies single file from fromdir to todir 
echo Single file so just copying 
echo Copy %filename% from %fromdir% to %todir% 
xcopy %fromdir%\%filename% %todir%\ /S /Y 
GOTO:EOF 

:copymkvs 
echo Copy all mkvs from %fromdir% and subdirs to %todir% 
xcopy %fromdir%\*.mkv %todir% /S /I /Y 
GOTO:EOF 

:extractrar 
echo Extracts all rars in %fromdir% to %todir%. 
rem Requires WinRar installed to c:\Program files 
if not exist %todir% mkdir %todir% 
IF EXIST %fromdir%\subs xcopy %fromdir%\subs %todir% /S /I /Y 
IF EXIST %fromdir%\subtitles xcopy %fromdir%\subtitles %todir% /S /I /Y 
call %winrar% x %fromdir%\*.rar *.* %todir% -IBCK -ilog"%todir%\RarErrors.log" 
IF EXIST %fromdir%\*.nfo xcopy %fromdir%\*.nfo %todir% /S /I /Y 
GOTO:EOF 

EDIT Кроме того, по какой-то причине, по линии 39 не печатает в журнале. Для тех, кто желает увидеть код с номерами строк: http://hastebin.com/juqokefoxa.dos

+0

Ваш код имеет больше строк с цитированием вопросов, чем правильные строки. И, как вы знаете, SO - это место для «профессиональных и энтузиастов-программистов», а не подражателей. – Endoro

+0

У вас появилось много операторов 'echo', показывающих события в обработке. Теперь, если вы разделите их с нами, мы будем в лучшем положении, чтобы помочь ... – Magoo

+0

@Endoro Если вы читаете первую строчку, «на основе другой». Я никогда не признавался в качестве профессионала, но мне нравится программировать. Magoo К сожалению, это не работает так ... Как только торрент заканчивается, он запускает пакетный скрипт. Независимо от того, сколько вы делаете паузы, вы просто обходите их. Вы даже не можете увидеть окно. – Spedwards

ответ

0

Вы говорите, что журнал не записывается. Попробуйте это как тест и посмотрите, записывает ли он журнал.

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

@echo off 
title Liam's torrent-file script 
rem Parameter usage: fromdir torrent-name label kind [filename] 
rem corresponds to uTorrents flags: %D %N %L %K %F 
echo ********************************************* 
echo Run on %date% at %time% 

set "fromdir=%~1" 
set "name=%~2" 
set "label=%~3" 
set "kind=%~4" 
set "filename=%~5" 
set "savepartition=F:\Completed Torrents" 
set "winrar=C:\Program Files (x86)\WinRAR\WinRAR.exe" 
set "torrentlog=F:\Torrent Scripts\logs\torrentlog.txt" 
set "handledlog=F:\Torrent Scripts\logs\handled_torrents.txt" 
set "errorlog=F:\Torrent Scripts\logs\ErrorLog.txt" 
set "label_prefix=" 

set "handledlog=%userprofile%\desktop\handled_torrents.txt" 

>> "%handledlog%" echo Input: "%fromdir%" "%name%" "%label%" "%kind%" "%filename%" 
>> "%handledlog%" echo %date% at %time%: Handling "%label%" torrent "%name%" 
+0

К сожалению, это имеет те же результаты. :( – Spedwards

+0

См. Мой отредактированный ответ – foxidrive

+0

Все еще ничего для журналов. – Spedwards

1

пару битов для уа:

1) Скорее всего, ваш сценарий не перемещение файлов. Предпочтения/Каталоги имеют возможность перемещать закачки по завершении. убедитесь, что эти настройки не перемещают файл.

2) uTorrent блокирует файлы при завершении, так что посев может продолжаться. Чтобы изменить это поведение, перейдите в раздел «Настройки/Дополнительно» и установите bt.read_only_on_complete на false

3) вы все равно будете лишены, потому что «Запустить эту программу при завершении торрента» на самом деле не так, как говорится. Он запускает программу, так как загрузка достигает 100%, но пока uTorrent все равно перемещает файл или посев. См. Мой отчет об ошибке here.

Краткое описание сообщения, на всякий случай, когда сообщение удаляется: вы должны установить команду в «Запустить эту программу, когда торрент меняет состояние:», добавить параметр% S и проверить, что% S == 11

4) Просто подсказка из моей попытки сделать что-то очень похожее: когда вы устанавливаете переменные из аргументов, добавьте тильду (% ~ 1 вместо% 1). Это отключит кавычки и позволит нам более легко создавать командные строки с переменными позже.