kiara2
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору повозился я с этими батниками, решил что трудно их дебагить, когда для этого средства нету, да и логика мне непонятна: 1. Ощущение что функция в независимости от того где она в скрипте будит, в начале или в конце, выполняется. Т.е. в данном случае после цикла, функция все равно выполняется. в независимости вызывали ее потом или нет. 2. Непонятки со временем: Код: >14:54:23,70 Copying pass.txt.... 14:54:23,80 File copied success ! >14:54:23,70 Copying passtext3.txt.... 14:54:23,89 File copied success ! >14:54:23,70 Copying text1.txt.... 14:54:23,95 File copied success ! >14:54:23,70 Copying text2.txt.... 14:54:24,03 File copied success ! >14:54:23,70 Copying text3.txt.... 14:54:24,09 File copied success ! 14:54:24,09 File copied success ! | Объясните мне почему время такое странное? т.е. ощущение что оно просто замерзает. 3. Почему то в конце выводится дважды. Хотя тут ясно почему, но тогда не вижу смысла? Тогда функция не есть функция, роль подпрограмы не выполняется. 4. Ну и что больше всего меня беспокоит. так это то что exit /b в "подпрограмме" ведет к тому что как только скрипт выходит из цикла доходит до "подпрограммы" и доходит до этой строчки, он мило выходит. Код: @echo off set OUTPUT=logfile.log rem прописываем путь к файлу text1.txt который находится на CD-ROM set cdtext1=d:\text1.txt rem прописываем путь к файлу text1.txt который находится на CD-ROM set cdtext2=f:\text2.txt set mainfolder=c:\tmp\ set folderclear1=%mainfolder%cd1\ set folderclear2=%mainfolder%cd2\ set text1clear=%mainfolder%cd1\text1.txt set text2clear=%mainfolder%cd2\text2.txt set isodisk1=%mainfolder%cd1.iso set isodisk2=%mainfolder%cd2.iso set text3txt=%mainfolder%text3.txt set passtext3=%mainfolder%passtext3.txt set passfile1=%mainfolder%pass.txt rem Сетевая папка. set netdisk=\\ttk.int\ttk\Sr\F rem Файлы на сетевом диске. set netpass=Y:\pass.txt set netpasstext3=Y:\passtext3.txt set text1copy=Y:\text1.txt set text2copy=Y:\text2.txt set text3copy=Y:\text3.txt title Copying text files echo Copy Crypto containers to local host..... >>%OUTPUT% for %%n IN (%netpass% %netpasstext3% %text1copy% %text2copy% %text3copy%) DO ( if %%n==%netpass% ( echo %TIME% Copying pass.txt....>>%OUTPUT% echo %TIME% Copying pass.txt.... xcopy %%n %mainfolder% /Y >nul set err=%ERRORLEVEL% call :constant %err% ) if %%n==%netpasstext3% ( echo %TIME% Copying passtext3.txt....>>%OUTPUT% echo %TIME% Copying passtext3.txt.... xcopy %%n %mainfolder% /Y >nul set err=%ERRORLEVEL% call :constant %err% ) if %%n==%text1copy% ( echo %TIME% Copying text1.txt....>>%OUTPUT% echo %TIME% Copying text1.txt.... xcopy %%n %folderclear1% /Y >nul set err=%ERRORLEVEL% call :constant %err% ) if %%n==%text2copy% ( echo %TIME% Copying text2.txt....>>%OUTPUT% echo %TIME% Copying text2.txt.... xcopy %%n %folderclear2% /Y >nul set err=%ERRORLEVEL% call :constant %err% ) if %%n==%text3copy% ( echo %TIME% Copying text3.txt....>>%OUTPUT% echo %TIME% Copying text3.txt.... xcopy %%n %mainfolder% /Y >nul set err=%ERRORLEVEL% call :constant %err% ) ) rem Sub program :constant if %err%==4 ( echo Insufficient memory to copy files or >>%OUTPUT% echo Insufficient memory to copy files or echo invalid drive or command-line syntax. >>%OUTPUT% echo invalid drive or command-line syntax. pause. exit. ) if %err%==2 ( echo You pressed CTRL+C to end the copy operation. >>%OUTPUT% echo You pressed CTRL+C to end the copy operation. pause. exit. ) if %err%==1 ( echo Files for copying are not found.>>%OUTPUT% echo Files for copying are not found. echo.>>%OUTPUT% pause. exit. ) if %err%==0 ( echo.>>%OUTPUT% echo %TIME% File copied success ! >>%OUTPUT% echo.>>%OUTPUT% echo %TIME% File copied success ! exit /b ) |
|