Целью является отображение имени каталога в MYFOLDER. MY.exe существует в папке, но с любопытством, без шаблона в ... \ desktemp *, «@echo Showing subfolders» никогда не отображается, но «@echo G работает». Однако MY.exe никогда не обнаруживается при перемещении в одну из подпапок.Каталоги Iterate с пакетом
OTOH в текущем коде никогда не находит MY.exe и никогда не отображает «@echo G работает», но правильно перечисляет каждую подпапку: «@echo Показывает подпапки».
Другая проблема заключается в том, что паузы в конце блока никогда не достигаются.
Подставив внутренний Ибо
cd \Users\%USERNAME%\Desktop
for /D /r %%G in ("desktemp*") do (
получает по существу, один и тот же результат. My.exe не найден, если он перемещен в одну из подпапок desktemp.
Setlocal EnableDelayedExpansion
set CURRDRIVE=C
SET MYFOLDER=
:SEARCHDRIVES
REM BLOCK
for %%B in (C) do (
if exist %%B: (
PUSHD %%B:\
if NOT DEFINED MYFOLDER (
ECHO "%CD%"
REM This always displays path batch is run from.
REM The above Pushd doesn't change to C:\
for /f "tokens=*" %%G in ('dir /b /s /a:d "%%B:\Users\%USERNAME%\Desktop\desktemp*" ^| find "\"') do (
@echo Showing subfolders
@echo %%G
pause
if exist "%%G\MY.exe" (
call set MYFOLDER=%%G
@echo %%G
@echo G is working
call echo %MYFOLDER%
pause
GOTO GOTMYFOLDER
)
)
)
)
REM Exist Drive
)
REM Drives Loop
:GOTMYFOLDER
cd /d %CURRDRIVE%:\
echo %MYFOLDER%
cd %MYFOLDER%
pause
Выше кусок вырезал из большого блока кода: конечная цель будет получить имена папок «\ Users \ New \ Desktop \ desktemp» в переменный через строку. Являются ли символы Escape, разделители и котировки во вложенных блоках правильно реализованы?
В файле' Bat' вам нужно удвоить '%' переменных 'FOR'. 'For %% B in (c) do (если существует %% B ......' – SachaDee
Да, я сохранил их как синглы, чтобы получить сообщения об ошибках. У меня есть настройка ведения журнала, но не фиксируется важный материал Есть ли хороший ресурс в любом месте регистрации журналов ошибок? –
Существует так много ошибок, трудно добиться успеха. Основная проблема заключается в том, что '% x' будет генерировать синтаксическую ошибку, если вы попытаетесь использовать ее как метапеременная, как вам уже известно. Независимо от вашего желания получать сообщения об ошибках, до тех пор, пока эти ошибки не будут исправлены, пакет просто не будет запущен. Нет смысла преследовать escape-символы и т. д., пока вы это не сделаете - базовый 'for' структура, которую вы используете, не будет работать. – Magoo