Войти

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


Страниц : 1 2 [3] 4 5

amel27
26-01-2011, 11:12
Tosyk, если переносятся ВСЕ подпапки со 2-го уровня, тогда какая разница как они называются - Material3 или еще как?.. или их надо фильтровать по имени на стадии переноса?..
<root>\script.bat »
Т.е. можно считать, что папкой назначения будет каталог с батником?

Tosyk
26-01-2011, 11:17
Т.е. можно считать, что папкой назначения будет каталог с батником? »
да так и есть!

Tosyk, если переносятся ВСЕ подпапки со 2-го уровня, тогда какая разница как они называются - Material3 или еще как?.. или их надо фильтровать по имени на стадии переноса?.. »
надо по сути все папки, допустим Material3 слить в одну, не важно где последняя будет находится, но удобнее всего в корне со скриптом

amel27
26-01-2011, 13:21
по-поводу скрипта проверяющего размер »как-то так:
@echo off
set root=.\_export_
if not exist "%root%" echo Can't find root folder!& pause>nul& exit

SETLOCAL EnableDelayedExpansion
for %%a in ("%root%") do set "rpth=%%~fa"

<nul set/p $="Scanning and preparing folders..."
(for /d %%a in ("%rpth%") do for /d %%b in ("%%~a\*") do for /d %%c in ("%%~b\*") do (
xcopy /q/t "%%~c\*" ".\%%~nc\">nul
echo "%%~c"))>"%~dpn0.$~1"
echo OK& <nul set/p $="Scanning files for moving..."
(for /f "usebackq delims=" %%a in ("%~dpn0.$~1") do (
for /f "delims=" %%b in ('dir/b/s/a-d "%%~a\*"2^>nul') do (set "$b=%%b"
echo "!$b:%%~a=%~dp0%%~na!"?"%%~zb"?"!$b!"
)))>"%~dpn0.$~2"
echo OK& <nul set/p $="Sorting file list..."
sort /l "C" "%~dpn0.$~2" /o "%~dpn0.$~3"
echo OK& <nul set/p $="Processing file list..."
set "$a="& set "$b="& set/a "$n1=0,$n2=0,$n3=0"
for /f "usebackq tokens=1-3 delims=?" %%a in ("%~dpn0.$~3") do (
if not "!$a!"=="%%~a" (
move "%%~c" "%%~a"
set "$a=%%~a"& set "$b=%%~b"& set/a "$k=0,$n1+=1"
) else if not "!$b!"=="%%~b" (
set/a "$k+=1,$n2+=1"& set "$k=000!$k!"& set "$b=%%~b"
move "%%~c" "%%~dpna_!$k:~-4!%%~xa"
) else set/a $n3+=1
)
echo OK& <nul set/p $="Deleting source folder..."
set/a "$n0=$n1+$n2+$n3"& rd /s/q "%rpth%"
echo OK& echo(& echo Processed files all: !$n0!, including:& echo(
echo moved : %$n1%
echo renamed : %$n2%
echo copies deleted: %$n3%

ENDLOCAL
echo(& echo Script works complited!
pause>nul

Tosyk
26-01-2011, 14:25
ой, а как добавить папки в обработку? или как он работает?

amel27
26-01-2011, 16:27
как добавить папки в обработку? »вбить имя своей папки корневого каталога (выделено синим)
как он работает? »все подкаталоги 2-го уровня заданной корневой папки поднимает до текущей

Tosyk
26-01-2011, 17:07
говорит Непредвиденное появление: \%~na!?%~zb?!$b!.

amel27
26-01-2011, 17:18
Непредвиденное появление: \%~na!?%~zb?!$b!. »нужен лог по всем правилам

Tosyk
26-01-2011, 18:49
лог такой:

Сканирование и подготовка каталогов...OK
Сканирование файлов для переноса...

amel27
27-01-2011, 04:05
лог такой »порядок формирования лога в постах #18 (http://forum.oszone.net/post-1591219-18.html), #31 (http://forum.oszone.net/post-1597366-31.html)
для целей отладки пришлось пока пожертвовать скоростью

Tosyk
27-01-2011, 05:01
я серьёзно, именно этоСканирование и подготовка каталогов...OK
Сканирование файлов для переноса... »
написано в файле script.log

amel27
27-01-2011, 05:25
Tosyk, обновите батник, уберите "@echo off" и повторите вывод в лог

Tosyk
27-01-2011, 05:33
теперь пишет это:

F:\il tempo>SETLOCAL EnableDelayedExpansion

F:\il tempo>set root=.\_export_

F:\il tempo>for %a in (".\_export_") do set "rpth=%~fa"

F:\il tempo>set "rpth=F:\il tempo\_export_"

F:\il tempo>set/p $="Сканирование и подготовка каталогов..." 0<nul
Сканирование и подготовка каталогов...
F:\il tempo>(for / %a in ("F:\il tempo\_export_") do @for / %b in ("%a\*") do @for / %c in ("%b\*") do @(
xcopy /q /t "%c\*" ".\%~nc\" 1>nul 2>&1
echo %c
) ) 1>"F:\il tempo\script_only_mover_2.$~1"

F:\il tempo>echo OK & set/p $="Сканирование файлов для переноса..." 0<nul
OK
Сканирование файлов для переноса...
F:\il tempo> echo !$b:%a=F:\il tempo\%~na!?%~zb?!$b!

файл скрипта называется script_only_mover_2.bat
и появился файл в корне script_only_mover_2.$~1

amel27
27-01-2011, 05:43
теперь пишет это »это старый код!.. и где сообщение об ошибке?

Tosyk
27-01-2011, 05:56
ааа, скрипт обновлён в прошлом сообщении, сразу не понял, что значит обновить скрипт

вот содержание лога:F:\il tempo>set root=.\_export_

F:\il tempo>if not exist ".\_export_" echo Не найден корневой каталог! & pause1>nul & exit

F:\il tempo>SETLOCAL EnableDelayedExpansion & for %a in (".\_export_") do set "rpth=%~fa"

F:\il tempo>set "rpth=F:\il tempo\_export_"

F:\il tempo>set/p $="Сканирование и подготовка каталогов..." 0<nul
Сканирование и подготовка каталогов...
F:\il tempo>type nul 1>"F:\il tempo\script_only_mover_2.$~1"

F:\il tempo>(for / %a in ("F:\il tempo\_export_") do @for / %b in ("%a\*") do @for / %c in ("%b\*") do @(
xcopy /q/t "%c\*" ".\%~nc\" 1>nul
echo %c 1>>"F:\il tempo\script_only_mover_2.$~1"
) )

F:\il tempo>echo OK & set/p $="Сканирование файлов для переноса..." 0<nul
OK
Сканирование файлов для переноса...
F:\il tempo>type nul 1>"F:\il tempo\script_only_mover_2.$~2"

F:\il tempo>>>"F:\il tempo\script_only_mover_2.$~2" echo !$b:%a=F:\il tempo\%~na!?%~zb?!$b!

amel27
27-01-2011, 06:46
ааа, скрипт обновлён в прошлом сообщении »с таким подходом мы и к следующему Новому году не управимся
вот содержание лога »это уже лучше, но всё равно неверно - нет сообщения об ошибке, значит в команде вывода не указан ключ "2>&1" всё из того же поста #18 (http://forum.oszone.net/post-1591219-18.html)
одну ошибку исправил - проверяйте

Tosyk
27-01-2011, 07:02
запустил команду script_only_mover_2.bat >script.log 2>&1, убрав "@echo off"

ничего не видно в окне cmd, но размер script.log меняется, плюс создался и меняется такой файл script_only_mover_2.$~1

в общем процесс я так понимаю идёт

amel27
27-01-2011, 07:09
script_only_mover_2.bat >script.log 2>&1, убрав "@echo off" »
круто!.. только это надо было делать несколькими постами раньше... первый раз можно было и в обычном режиме проверить
а вывода на экран и не должно быть - всё пишется в лог-файл

Tosyk
27-01-2011, 08:22
кажется скрипт завершил работу, он как бы не отвечает, просто стоит, лог не пишется дальше, только 3 мегабайта.

скрипт создал в корне структуру [struct01] из этого поста #40 и всё, пустые папки, файлы на месте (в .\_export_\)

нужен этот лог?

плюс ещё в корне лежит файл script_only_mover_2.$~1 (536кб)

amel27
27-01-2011, 09:29
нужен этот лог? »
запакуй лог вместе с временными файлами ($~1 и подобные) и кинь на обменник

Tosyk
27-01-2011, 10:09
http://dl.dropbox.com/u/9919707/script_working/_only_mover_2.7z




© OSzone.net 2001-2012