Показать полную графическую версию : [решено] Автозамена при перемещении
Tosyk, если переносятся ВСЕ подпапки со 2-го уровня, тогда какая разница как они называются - Material3 или еще как?.. или их надо фильтровать по имени на стадии переноса?..
<root>\script.bat »
Т.е. можно считать, что папкой назначения будет каталог с батником?
Т.е. можно считать, что папкой назначения будет каталог с батником? »
да так и есть!
Tosyk, если переносятся ВСЕ подпапки со 2-го уровня, тогда какая разница как они называются - Material3 или еще как?.. или их надо фильтровать по имени на стадии переноса?.. »
надо по сути все папки, допустим Material3 слить в одну, не важно где последняя будет находится, но удобнее всего в корне со скриптом
по-поводу скрипта проверяющего размер »как-то так:
@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
ой, а как добавить папки в обработку? или как он работает?
как добавить папки в обработку? »вбить имя своей папки корневого каталога (выделено синим)
как он работает? »все подкаталоги 2-го уровня заданной корневой папки поднимает до текущей
говорит Непредвиденное появление: \%~na!?%~zb?!$b!.
Непредвиденное появление: \%~na!?%~zb?!$b!. »нужен лог по всем правилам
лог такой:
Сканирование и подготовка каталогов...OK
Сканирование файлов для переноса...
лог такой »порядок формирования лога в постах #18 (http://forum.oszone.net/post-1591219-18.html), #31 (http://forum.oszone.net/post-1597366-31.html)
для целей отладки пришлось пока пожертвовать скоростью
я серьёзно, именно этоСканирование и подготовка каталогов...OK
Сканирование файлов для переноса... »
написано в файле script.log
Tosyk, обновите батник, уберите "@echo off" и повторите вывод в лог
теперь пишет это:
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
теперь пишет это »это старый код!.. и где сообщение об ошибке?
ааа, скрипт обновлён в прошлом сообщении, сразу не понял, что значит обновить скрипт
вот содержание лога: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!
ааа, скрипт обновлён в прошлом сообщении »с таким подходом мы и к следующему Новому году не управимся
вот содержание лога »это уже лучше, но всё равно неверно - нет сообщения об ошибке, значит в команде вывода не указан ключ "2>&1" всё из того же поста #18 (http://forum.oszone.net/post-1591219-18.html)
одну ошибку исправил - проверяйте
запустил команду script_only_mover_2.bat >script.log 2>&1, убрав "@echo off"
ничего не видно в окне cmd, но размер script.log меняется, плюс создался и меняется такой файл script_only_mover_2.$~1
в общем процесс я так понимаю идёт
script_only_mover_2.bat >script.log 2>&1, убрав "@echo off" »
круто!.. только это надо было делать несколькими постами раньше... первый раз можно было и в обычном режиме проверить
а вывода на экран и не должно быть - всё пишется в лог-файл
кажется скрипт завершил работу, он как бы не отвечает, просто стоит, лог не пишется дальше, только 3 мегабайта.
скрипт создал в корне структуру [struct01] из этого поста #40 и всё, пустые папки, файлы на месте (в .\_export_\)
нужен этот лог?
плюс ещё в корне лежит файл script_only_mover_2.$~1 (536кб)
нужен этот лог? »
запакуй лог вместе с временными файлами ($~1 и подобные) и кинь на обменник
http://dl.dropbox.com/u/9919707/script_working/_only_mover_2.7z
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.