PDA

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


Alexander_88
01-07-2018, 15:35
Здравствуйте, есть код

@Echo Off

Set "BoxIn=C:\settings and files\limit"
Set Mask= "START - *."

:Begin
Set "NewEnd="
SET /P NewEnd=Enter limit :
If "%NewEnd%"=="" GoTo :Eof
Call :FileRen "%NewEnd%" "%BoxIn%" %Mask%
rem GoTo :Begin
GoTo :Eof

:FileRen
:BeginRen
If "%~3"=="" GoTo :Eof
FOR /F "usebackq tokens=1 delims=*" %%f IN ('%~3') DO Set "OldName=%%f"
FOR %%f IN ("%~2\%~3") DO Ren "%%f" "%OldName%%~1%%~xf"
Shift /3
GoTo :BeginRen
GoTo :Eof


Как после его выполнения продолжить выполнять команды?
например if exist = "new.txt" del "fi*.txt"

пишу в самом низу.. не работает :(

Iska
01-07-2018, 16:22
Как после его выполнения продолжить выполнять команды? »
В указанном виде — никак.

пишу в самом низу.. не работает »
До Ваших команд дело никогда не дойдёт, поскольку внутренняя команда безусловного перехода goto :eof передаёт управление на скрытую метку в конце пакетного файла :).

megaloman
01-07-2018, 16:44
Alexander_88, Не понял, что Вы имеете ввиду. Имхо, перед : rem GoTo :Begin ваяйте код дальше.
Вообще, структура командного файла практически как у любой программы. Здесь:
Главная часть. Если есть процедуры, она должна завершиться или goto :eof или exit /b (подробнее exit /?)
Процедура оформляется как
:метка процедуры
goto :eof или exit /b
Никакие строки, написанные ниже, исполняться не будут - это совершенно нелогично. Туда программа просто не попадает. Если конечно, не извратиться и поставить там метку, на которую потом перейти по goto. Но это не наш путь, так можно и лоб расшибить

Alexander_88
01-07-2018, 16:56
просто этот бат переименовывает файл, потом его нужно копировать по локальной сети, вот и не понятно как это сделать

Alexander_88, Не понял, что Вы имеете ввиду. Имхо, перед : rem GoTo :Begin ваяйте код дальше »
попробую, только нужно копировать уже после переименования (выполнения данной операции)

Alexander_88
01-07-2018, 17:17
да, вроде работает, и перед GoTo :BeginRen, и перед : rem GoTo :Begin :)

alpap
01-07-2018, 19:48
Alexander_88,
а зачем там хоть одна goto?
вот примерный шаблон:

@echo off
:: Допустим находим имя файла (file.txt из сочетаний)
set "d=C:\papka"
set "new=newfile.txt"

pushd "%d%"
for /f "delims=" %%a in ('dir /a-d/b "file.txt"') do call :m1 "%%a"
:: Вернулись из подпрограммы в метке "m1" после выполнения всех указанных там команд
echo Выполняем задачи основного кода
popd
pause& exit

:m1
:: Переименовываем найденный файл
echo ren %~1 %new%
echo Отправляем файл %new% куда-то
exit /b




© OSzone.net 2001-2012