Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] продолжить код (http://forum.oszone.net/showthread.php?t=335550)

Alexander_88 01-07-2018 15:35 2820204

продолжить код
 
Здравствуйте, есть код

Код:

@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 2820212

Цитата:

Цитата Alexander_88
Как после его выполнения продолжить выполнять команды? »

В указанном виде — никак.

Цитата:

Цитата Alexander_88
пишу в самом низу.. не работает »

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

megaloman 01-07-2018 16:44 2820216

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

Alexander_88 01-07-2018 16:56 2820221

просто этот бат переименовывает файл, потом его нужно копировать по локальной сети, вот и не понятно как это сделать

Цитата:

Цитата megaloman
Alexander_88, Не понял, что Вы имеете ввиду. Имхо, перед : rem GoTo :Begin ваяйте код дальше »

попробую, только нужно копировать уже после переименования (выполнения данной операции)

Alexander_88 01-07-2018 17:17 2820229

да, вроде работает, и перед GoTo :BeginRen, и перед : rem GoTo :Begin :)

alpap 01-07-2018 19:48 2820236

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



Время: 23:08.

Время: 23:08.
© OSzone.net 2001-