如果TeamCity代理执行批处理,则IF EXIST对现有文件返回false

时间:2018-11-28 15:30:22

标签: windows command-line teamcity

npm.cmd文件中,下一行:

ECHO %NPM_PREFIX_NPM_CLI_JS%

IF EXIST "%NPM_PREFIX_NPM_CLI_JS%" (
  ECHO FILE EXISTS
  SET "NPM_CLI_JS=%NPM_PREFIX_NPM_CLI_JS%"
)

"%NODE_EXE%" "%NPM_CLI_JS%" %*

执行此操作时,ECHO打印:C:\Windows\system32\config\systemprofile\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js。我已经检查了文件-它存在。当我以SYSTEM用户身份运行自己的批处理时-它也可以工作。但是当TeamCity代理执行npm命令时,它认为npm-cli.js文件不存在。

我检查了对该文件和文件夹的访问权限,一切都很好。甚至,当我删除IF并仅保留SET命令节点可以找到时,结束执行文件。

为了进行测试,我编写了一个脚本来检查所有文件夹是否存在。从TeamCity测试显示运行它,它认为确实存在C:\Windows\system32\config\systemprofile\AppData\Roaming之前的文件夹,但之后的所有内容都不存在。

从TeamCity命令行步骤执行DIR /A命令,打印:

03/02/2017  10:31 AM    <DIR>          .
03/02/2017  10:31 AM    <DIR>          ..
10/26/2015  01:33 PM    <DIR>          Microsoft
03/02/2017  10:31 AM    <DIR>          NuGet
               0 File(s)              0 bytes
               4 Dir(s)  122,662,453,248 bytes free

实际上,结果中没有显示3个文件夹。

这可能是什么原因?

0 个答案:

没有答案