目标是在MYFOLDER中显示目录名称。 MY.exe存在于该文件夹中,但好奇的是,没有通配符在... \ desktemp *中,“@echo Showing子文件夹”从不显示,但“@echo G正在工作”是。但是,移到其中一个子文件夹时永远不会找到MY.exe。迭代目录与批处理
OTOH当前代码永远不会发现MY.exe永不显示“@echo G的工作”,但正确地列出每个子文件夹:“@echo显示子文件夹”。
另一个问题是在所述块的端部的停顿是从来没有达到过。
代内对于
cd \Users\%USERNAME%\Desktop
for /D /r %%G in ("desktemp*") do (
基本上得到相同的结果。如果移动到desktemp的其中一个子文件夹,找不到My.exe。
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 \用户新\桌面\ desktemp”到经由提示的变量。 嵌套块中的转义字符,分隔符和引号是否正确执行?
在'Bat'文件中,您必须加倍'FOR'变量的'%'。 (对于(c)中的%% B做(如果存在%% B ......' – SachaDee 2014-12-02 00:50:02
是的,我将它们保存为单数以获取错误消息。我有日志记录设置,但没有捕获重要的东西。有一个很好的资源上一批错误日志地方? – 2014-12-02 03:39:43
有这么多的错误,就很难取得进展。最根本的问题是,如果你尝试使用它作为一个metavariable'%x'会产生一个语法错误,因为你已经明白了,无论你想要得到错误信息,直到这些错误得到纠正,批处理将不会运行。没有必要去追赶转义字符等等,直到你这样做 - 基本的'for'您使用的是行不通的结构。 – Magoo 2014-12-02 06:32:08