in1975, ну и что, что на консоль. Ну если в окне лога проявляются такие косяки внезапно, тогда нужно всё-таки что-то с этим делать. И уж конечно обходить стороной возможные проблемы. Консоль - она и в африке консоль. Ничего такого, если будут скачиваться обновления через консоль.
А то время уже сколько прошло. А воз и ныне там. Старая утилита у многих даёт сбои, тоже то одно, то другое. Каждый день в теме жалобы.
Вон, например, моя старая PS3GameConvert_v091 не даёт же подобных сбоев. Не видел от неё таких жалоб ни у нас, ни за бугром, где поголовно ей многие пользуются. Даже стабильнее работает, чем CFW2OFW_Helper, с которой тоже у многих проблемы и куча жалоб.
У меня же нет никаких проблем с пробелами в путях, а у тебя они есть.
Потому что ты используешь извращённые методы, а не последовательность действий.
Не надо усердствовать с командой Call и Exit/b, эти команды часто дают сбои. А ты их кругом напихал, где это даже совсем не нужно, так же, как ты её пихнул даже в
dirsplit_last... Вот выписка из твоего кода:
setlocal enabledelayedexpansion
for %%b in (chunk*.txt) do (
for /f "tokens=*" %%I in (%%b) do (
call :nm %%b
echo f|xcopy /T /E "%%I" "SPLITTED\!fn!\%%I" >nul
copy param.sfo "SPLITTED\!fn!\!fdir!" >>log.txt
move "%%I" "SPLITTED\!fn!\%%I" >>log.txt
)
)
echo done
exit
:nm
set fn=%~n1
exit /b
Зачем ты вытащил через
call :nm %%b всего одно действие в конец файла отдельной секцией, причём с возвратом обратно.
Чтобы получить всего-лишь имя файла, ты произвёл целую махинацию.
Поэтому команда
call :nm %%b вместе с переходом в другую область и возврат обратно обычно пишется простым кодом с последовательным выполнением:
set fn=%%~nB
Ну и так далее... куча лишних телодвижений, причём ничем не оправданных, отсюда лишние косяки в работе программы.
Потом ты как-то спрашивал по поводу кавычек и заменил там на
puch
Там кавычки вроде бы должны были передаваться из
set path="c:\path"
А далее, в команде
FOR они теряются, потому что выставлено на весь батник расширенное
setlocal enabledelayedexpansion
Там что-то
for %%I in (%path%) do ()
Так вот, в этом
(%path%) должен приходить путь с кавычками, но кавычки обрезаются.
Тут нужно избавится от расширения команд
setlocal enabledelayedexpansion, если в этом нет непосредственной необходимости, что в основном накладывает твоя любимая
Call.
Затем нужно разрешить в скобках использование двойных кавычек вот этим -
"usebackq".
В общем, пока занимаюсь своей PS3GameExtractor, просматривал твой код, увидел кучу необоснованных решений и кругом напиханное
Call.
Я эту команду стараюсь обходить стороной, использую только там, где без неё по другому не обойтись, потому что ранее много раз сталкивался со сбоями из-за неё. Поэтому её выполнение приходится пихать в самый конец батника, иначе, в середине кода, команда иногда не даёт обратный возврат и почему-то читает
Exit/b или
EOF просто как
Exit и вылетает.
Потом столкнулся с проблемой, при копировании
xcopy dir%%I newdir%%I
Прога постоянно запрашивает
Это файл или папка? )))
Ты же сделал хук через подтверждение, что это файл:
echo F|
Дело в том, что мы даём команду на копирование файла из одной папки, как тот же файл в другую папку.
Хотя должны копировать файл из одной папки в другую папку. То есть, должны копировать
файл в папку, а не файл в файл!
Посмотри мой код в ISS, как я это реализовал. Я просто у конечного файла обрезал имя файла:
set pn=%%~I
xcopy /y "!fnm!\%%~I" "!tmp!\SPLITTED\!fn!\!pn:%%~nxI=!"
И, кстати, батник у меня создаётся динамически.
Я создал листинг всех строк батника в ISS
А потом в батнике сделал переменные, которые берутся из основной программы и батник потом создаётся в папке %TEMP% с указанными пользователем переменными в программе, там путь к выбранной папке, размер папки для деления, вообщем динамические свойства. Ты можешь посмотреть как сохраняется батник в папке %TEMP% и как там разворачиваются пути из переменных.