Подниму тему, дабы не плодить лишние.
Есть конструкция:
Код:
@ECHO off
@COLOR 3
@CHCP 866
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
CLS
:Start
ECHO ==================================
ECHO 5 -Sirene
ECHO 0 -Выход
ECHO ==================================
SET PathLocal=\\MyPC\Data\Programms
SET /p variant=Ваш выбор =
::IF /i %variant%==5 GOTO Test
IF /i %variant%==5 GOTO Sirene
IF /i %variant%==0 EXIT
GOTO :error
:Sirene
CLS
IF EXIST %PathLocal%\Sirene\%COMPUTERNAME% (
SET path=%PathLocal%\Sirene\%COMPUTERNAME%
FOR /f "TOKENS=*" %%i IN ('DIR /b "!path!"') DO (
SET result=%%i
if "!result:~0,4!"=="gfum" (
xcopy %PathLocal%\Sirene\%COMPUTERNAME% C:\%result%\/e/i/q/h/y
Pause
)
cls
)
GOTO :Start
)
ECHO Для вашего ПК нет терминала Sirene, обратитесь к руководителю
GOTO :Start
В таком варианте xcopy не хочет работать:
отвечает " 'xcopy' is not recognized as internal or external command, operable program or bach file..."
НО, если переместить эту же команду в отдельную точку входа :Test (Специально оставил как комент в листинге) с необходимым указанием всех переменных -все копируется исправно.
Вот отдельный пример конструкции для проверки:
:Test
set result=gfum33
xcopy %PathLocal%\Sirene\%COMPUTERNAME% C:\%result%\/e/i/q/h/y
pause
Проверяю на локальной машине, по сути есть на сервере папка в которой содержатся папки с названиями, идентичными именам машин в сети, при работе файла он опрашивает по адресу "свою папку" и берет от туда нужную для себя копию папки. копии отличаются только по номерам, основание одно "gfum" все опознается, находится, но вот при вхождении в цикл для копирования - ошибка поправьте, где ошибся пожалуйста.
внутрь цикла причем попадает Pause срабатывает исправно, просто ограничение ф-ции какое-то, которое я не понимаю.