из-за какой проблемы со средой функция пакетного файла работает неправильно - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть один скрипт и один файл конфигурации.в файле конфигурации в основном есть

SNFold_1="ORKI App 1.0.0.0219"
SNFile_1="8520010008_852001.T3A.pkg"
SNPrm_1="8520010008_852001.P3A.txt"
SNXML_1="852001.xml"  

SNFold_2="iConnect REST Server 1.8.0.0017"
SNFile_2="8296831817_829683.P3A.pkg"
SNPrm_2="8296831817_829683.P3A.txt"
SNXML_2="829683.xml"

В основном файле сценария у меня есть код ниже:

@echo off
  set SNFold_1=%SNFold_1:"=%
  set SNFile_1=%SNFile_1:"=%
  set SNPrm_1=%SNPrm_1:"=%
  set SNXML_1=%SNXML_1:"=%

  set SNFold_2=%SNFold_2:"=%
  set SNFile_2=%SNFile_2:"=%
  set SNPrm_2=%SNPrm_2:"=%
  set SNXML_2=%SNXML_2:"=%

call:signFunc "%SNFold_1%" %SNFile_1% %SNPrm_1% %SNXML_1%
call:signFunc "%SNFold_2%" %SNFile_2% %SNPrm_2% %SNXML_2%

call:end

EXIT /B %ERRORLEVEL% 

:signFunc    - here starts Sign function

::::::::::::::::::::::::
:: prepare sign xml file
::::::::::::::::::::::::

cd %NEW_PACKAGE_BASE_PATH%\%NEW_PACKAGE_NAME%\%New_PACK_PTN%\Sign\xml

copy %NEW_PACKAGE_BASE_PATH%\%NEW_PACKAGE_NAME%\%New_PACK_PTN%\Sign\Temp\sample.xml .

Set "search=sign folder"
Set "replace=%~1"
Set "textfile=sample.xml"
Set "newfile=indesnew.txt"
(
    For /F "Tokens=1* Delims=:" %%A In ('FindStr /N "^" "%textfile%"') Do (
        If "%%B"=="" (
            Echo=
        ) Else (
            Set "line=%%B"
            SetLocal EnableDelayedExpansion
            Set "line=!line:%search%=%replace%!"
            Echo=!line!
            EndLocal
        )
    )
)>"%newfile%"
Del "%textfile%"
Ren "%newfile%" "%textfile%"

Set "search=sign binary file"
Set "replace=%~2"
Set "textfile=sample.xml"
Set "newfile=indesnew.txt"
(
    For /F "Tokens=1* Delims=:" %%A In ('FindStr /N "^" "%textfile%"') Do (
        If "%%B"=="" (
            Echo=
        ) Else (
            Set "line=%%B"
            SetLocal EnableDelayedExpansion
            Set "line=!line:%search%=%replace%!"
            Echo=!line!
            EndLocal
        )
    )
)>"%newfile%"
Del "%textfile%"
Ren "%newfile%" "%textfile%"

Set "search=sign parameter"
Set "replace=%~3"
Set "textfile=sample.xml"
Set "newfile=indesnew.txt"
(
    For /F "Tokens=1* Delims=:" %%A In ('FindStr /N "^" "%textfile%"') Do (
        If "%%B"=="" (
            Echo=
        ) Else (
            Set "line=%%B"
            SetLocal EnableDelayedExpansion
            Set "line=!line:%search%=%replace%!"
            Echo=!line!
            EndLocal
        )
    )
)>"%newfile%"
Del "%textfile%"
Ren "%newfile%" "%textfile%"

rename sample.xml %~4

cd "%SignKit_Path%"

call antCmdLine.bat %NEW_PACKAGE_BASE_PATH%\%NEW_PACKAGE_NAME%\%New_PACK_PTN%\Sign\xml\%~4 mockup 

EXIT /B 0

:end
move "%SignKit_Path%\sign_file.log" "%NEW_PACKAGE_BASE_PATH%\%NEW_PACKAGE_NAME%\%New_PACK_PTN%\Sign\Temp"
@RD /S /Q "%NEW_PACKAGE_BASE_PATH%\%NEW_PACKAGE_NAME%\%New_PACK_PTN%\Sign\xml"

Теперь проблема была в этом.Я запустил его на своем компьютере, он работал гладко с

  • call: signFunc "% SNFold_1%"% SNFile_1%% SNPrm_1%% SNXML_1%

затем второй

  • call: signFunc "% SNFold_2%"% SNFile_2%% SNPrm_2%% SNXML_2%

Но когда он запустился на моем коллегном компьютере, он столкнулся с этой проблемой

  • call: signFunc "% SNFold_1%"% SNFile_1%% SNPrm_1%% SNXML_1%

работает нормально, но сразу после этого я получил паузу, чтобы спросить Нажмите любую клавишу для продолжения... После нажатия любой клавиши второй цикл работал как @ echo на и даже зависал ...

И мой коллега, и я используем Windows 10

Есть ли что-то другое на компьютере моего коллеги, потому что это произошло?

На основании вашего ввода я просто изменил две вещи и сделал так, чтобы он работал легко

  • 1) Изменилформат файла конфигурации.В этом файле.cfg я перечисляю параметры следующим образом:
  • "Приложение ORKI 1.0.0.0219" 8295650401_CAVDEV.P3A.pkg 8295650401_CAVDEV.P3A.jsat 829565.xml
  • "Сервер iConnect REST 1.8.0,0017 "8296831817_829683.P3A.pkg 8296831817_829683.P3A.txt 829683.xml
  • 2) Затем в главном файле сценария

    for / f" tokens = 1-4 delims =, 1-4 delims =,"%% A in (file.cfg) делает вызов: signFunc %% A %% B %% C %% D

    : signFunc - здесь запускается функция подписи

И все работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...