1

フォルダーが存在する場合はフォルダー内に移動し、他のことを行わない場合は特定のことを行うバッチスクリプトを作成しています

私は次のような階層を持っています:-

  C:\Validation\docs\chm\help.chw

この「help.chw」ファイルに移動したいのですが、これが私がやっていることであり、エラーが発生しています

IF EXIST docs (
CD docs echo curr dir = %CD% goto imagefolder 
) 

IF EXIST docs (
CD docs echo curr dir = %CD% goto imagefolder 
) 

ECHO Please include 'docs' folder in the current working directory
ECHO.
ECHO The program would close now , restart the batch file after making the changes cited above
ECHO.
goto exit

これは私が書いたものです

 IF EXIST docs (
 CD "docs"
 echo curr dir = %CD%
 goto imagefolder

)

それは与えます

 C:\Validation MSI
4

1 に答える 1

2

あなたは明らかにうまくいかないことをしようとしcdています。docs echo curr dir = %CD% goto imagefolder

cdと他のコマンドの間には行を入れてください。

IF EXIST docs (
CD docs
echo curr dir = %CD%
goto imagefolder 
) else (
echo Folder not found
)

IF EXIST docs (
CD docs
echo curr dir = %CD%
goto imagefolder 
) else (
echo Folder not found
)

gotoへのメッセージの一部ではないと推測しているため、あなたの行も別の行に入れますecho

アップデート

コードが実際の現在のディレクトリをエコーし​​ない理由は、cd変数がif括弧内にあるためです。つまり、内部の変数は実行時に評価されるため、括弧が終了する前に変数が変更された場合、値は元と同じになります。括弧の前、この場合は親ディレクトリです。

修正は、一度に while ブロックを評価するのではなく、それらに到達したときにそれらを評価する遅延展開を有効にすることです。

setlocal enabledelayedexpansion
IF EXIST docs (
cd docs
echo curr dir = !CD!
goto imagefolder
)
于 2012-12-31T11:42:13.093 に答える