目標是在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