當從不同的目錄調用時,此批處理腳本返回不正確的值。我希望有人能幫助我解決這個問題,以便它始終確定正確的APP_HOME目錄。當從不同的目錄調用時,此批處理腳本返回不正確的值
的腳本位於象的位置:
C:\Temp\MyApplication\bin\runner.bat
而且,我想從執行它:
C:\Temp\OutsideDir\runApp.bat
當我嘗試,我得到「OutsideDir」,但我想它得到 '本':
C:\Temp\OutsideDir>C:\Temp\MyApplication\bin\runner.bat
Current directory is: C:\Temp\MyApplication\bin
This folder name: OutsideDir
Function arg must match actual folder name.
This script may not be running from the expected folder.
There was an error.
這裏是腳本:
@ECHO off
SETLOCAL ENABLEDELAYEDEXPANSION
TITLE Script %~n0%~x0 running from %~dp0
CALL :getparentfolder bin
ECHO My app home is: %APP_HOME%
GOTO :END
:: function to get parent folder name or APP_HOME of scripts currrent folder
:: function requires current folders name as an arg or it will fail to run
:getparentfolder dirName
SET "BIN_HOME=%~dp0"
IF "%BIN_HOME:~-1%"=="\" SET "BIN_HOME=%BIN_HOME:~0,-1%"
ECHO Current directory is: %BIN_HOME%
FOR /F "tokens=1,* delims=^\" %%I IN ("%BIN_HOME%") DO (
SET THISFOLDER=%%~nxI
)
ECHO This folder name: %THISFOLDER%
IF "%~1"=="%THISFOLDER%" (
SET APP_HOME=!BIN_HOME:\%THISFOLDER%=!
ECHO APP_HOME: %APP_HOME%
) ELSE (
ECHO Function arg must match actual expected folder name.
ECHO This script may not be running from the expected folder.
GOTO :ERROR
)
EXIT /B 0
:ERROR
ECHO There was an error.
PING.exe -n 10 -w 1 127.0.0.1>nul
:END
PING.exe -n 10 -w 1 127.0.0.1>nul
ECHO The script %~n0%~x0 is finished.
做你試過'CD C:\ TEMP \ OutsideDir \'在跑你的蝙蝠之前? – 2013-05-01 16:48:54
我希望腳本僅返回關於ITSELF的信息,而不是關於腳本位置的信息。這是因爲我想從其他腳本調用此腳本。這很難解釋,但我希望這已經足夠。無論調用它的腳本如何,該腳本都必須能夠確定其自己的家。 – djangofan 2013-05-01 16:53:40