私たちのAzure Webアプリケーションデプロイメント用のカスタムdeploy.cmdを作成しようとしています。私は、ファイルパスの最初と最後の文字を削除しテストするためのtest.cmdのスクリプトを作成しました:cmdバッチファイルの削除文字が失敗する
"D:\Program Files (x86)\npm\3.10.3\npm.cmd"
それが引用されていない場合、PowerShellスクリプトが怒るので、理由がありますが、CMDファイルがないためにそれを必要とします引用符で囲んで正しく実行してください。私のテストスクリプトは:
echo off
setlocal enabledelayedexpansion
SET DEPLOYMENT_SOURCE=D:\home\site\wwwroot
SET NPM_CMD="D:\Program Files (x86)\npm\3.10.3\npm.cmd"
echo %NPM_CMD%
set NPM_CMD=%NPM_CMD:~1, -1%
echo %NPM_CMD%
pushd "%DEPLOYMENT_SOURCE%"
call "%NPM_CMD%" cache clean
call "%NPM_CMD%" install
pushd "%DEPLOYMENT_SOURCE%"
これは正しく動作し、npmが正しく呼び出されます。
set NPM_CMD=%NPM_CMD:~1, -1%
ラインと私のメインdeploy.cmdファイルにそれを置く:だから私は取っ
PS D:\home\site\wwwroot> .\deploy.cmd False "D:\Program Files (x86)\npm\3.10.3\npm.cmd"
D:\home\site\wwwroot>echo off
starting deploy.cmd
-------------------
False "D:\Program Files (x86)\npm\3.10.3\npm.cmd"
all: False "D:\Program Files (x86)\npm\3.10.3\npm.cmd"
NPM_GLOBAL: False
NPM_INFO: "D:\Program Files (x86)\npm\3.10.3\npm.cmd"
ECHO is off.
NPM_CMD set to
'"~1, -1"' is not recognized as an internal or external command,
operable program or batch file.
Handling node.js deployment.
D:\home\site\wwwroot
D:\home\site\wwwroot\package.json
Install npm packages
Cleaning NPM cache.
PS D:\home\site\wwwroot> '"~1, -1"' is not recognized as an internal or external command,
operable program or batch file.
The system cannot find the batch label specified - error
私は理由を理解していない:
echo off
setlocal enabledelayedexpansion
:: Setup
:: -----
echo starting deploy.cmd
echo -------------------
echo %*
SET all=%*
SET NPM_GLOBAL=%1
SET NPM_INFO=%2
echo all: %all%
echo NPM_GLOBAL: %NPM_GLOBAL%
echo NPM_INFO: %NPM_INFO%
SET DEPLOYMENT_SOURCE=D:\home\site\wwwroot
if NPM_GLOBAL=="True" (
REM install specific version of NPM
echo installing specific version of NPM @ %NPM_INFO%
npm install -g [email protected]%NPM_INFO%
%NPM_CMD%=npm
) else (
SET NPM_CMD=%NPM_INFO%
set NPM_CMD=%NPM_CMD:~1, -1%
echo %NPM_CMD%
echo NPM_CMD set to %NPM_CMD%
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
echo Handling node.js deployment.
echo %DEPLOYMENT_SOURCE%
ECHO %DEPLOYMENT_SOURCE%\package.json
echo Install npm packages
IF EXIST "%DEPLOYMENT_SOURCE%\package.json" (
pushd "%DEPLOYMENT_SOURCE%"
echo Cleaning NPM cache.
call "%NPM_CMD%" cache clean
call "%NPM_CMD%" install
IF !ERRORLEVEL! NEQ 0 goto error
popd
)
これは次のような出力が得られます最初の文字と最後の文字を削除する方法とそれがなぜエラーであるのかはわかりません。私はファイルに間違ったことは何も見えません。