0
여기에 일괄 처리가 있습니다. 상위 디렉토리를 고수하려고합니다.루틴의 변수 덮어 쓰기
@echo off
SET CWD=
:process
if [%1] == [] goto end
SET MASTER_DIR="%~f1"
rem Change to say, E:\DVD_LIBRARY\Rips
cd /d %MASTER_DIR%
for /R %%D IN (\) DO (
rem Temporarily change to the subdir, such as E:\DVD_LIBRARY\Rips\SIN_CITY\
pushd %%D
for /F "usebackq" %%Z in (`dir /b *.vob 2^>NUL`) DO (
if exist %%~fZ (
rem Get this parent directory to store the log file in (eventually)
CALL :resolve "%%D\.." CWD
rem Nada.
echo: %CWD%
)
)
popd
)
shift
goto process
:resolve
SET %2=%~f1
goto :EOF
:resolve
루틴에서 나는 원하는 값을 얻고 있습니다. 이 블록으로 돌아 가기 :
if exist %%~fZ (
CALL :resolve "%%D\.." CWD
echo: %CWD%
)
나는 아무것도 얻지 못합니다.
이것이 왜 고집하지 않는 이유 또는 더 좋은 방법일까요? 나는 구글을 샅샅이 뒤졌으며이 기술과 다른 몇몇 기술자가 여기에 있다는 것을 알았지 만, 왜 CALL
값이 번역되지 않는지 모르겠습니다.
아름다운 CALL-확장으로 해결 할 수있다. 그런 이상한 언어 .... 고마워! – Phix