2013-02-04 3 views
0

아래는 내 코드의 단순화 된 조각입니다 :은 루프 중첩에서 설정하지 않는 - Windows 배치

@echo off  
setlocal enabledelayedexpansion 
    for /f %%f in ('%pomFiles%') do (
     findstr "var" %%f > nul 
     if errorlevel 0 if not errorlevel 1 (
      cd "%%~dpf" 
      for /f "usebackq" %%i in ('%%~dpftree.out') do (set size=%%~zi && echo !size!) 
      if !size! gtr 0 (
        //do stuff 
      ) 
     ) 
    ) 

!size! 변수가 설정되는 것 같지 않습니다. echo !size!을 입력하면 !size!이 인쇄됩니다. !size!을 평가하려면 어떻게해야합니까?

+0

가능한 중복 http://stackoverflow.com/questions/14684074/batch-file-printing- out-commands-with-echo-off) – Vicky

+0

새로운 질문을 게시하는 대신 문제를 해결할 때 원래 질문을 편집하는 것이 좋습니다. – Vicky

+0

@Vicky, 귀하가 제안한 의견에 따라 명령 인쇄 문제를 해결했습니다. 제안 사항은 귀하가 게시 할 경우 답변으로 표시됩니다. 그러나 나는 이것이 완전히 다른 문제라고 느꼈다. – Alex

답변

1

for /f을 사용하고 있기 때문에 파일의 내용을 읽는 것이므로 파일의 첫 번째 줄로 설정된 변수 %%i의 크기를 가져 오려고합니다.

당신은 단지 일반 for 루프를 필요

for %%i in ("%%~dpftree.out") do (set size=%%~zi && echo !size!) 
if !size! gtr 0 (
    //do stuff 
) 
[오프 @echo와 명령을 인쇄 배치 파일] (의
+0

제안 된 발리 C에 감사 드린다. 그러나이 코드를 변경해도 여전히 가치보다는'! size! '를 출력하는 것처럼 보인다. 'echo %% ~ zi'라고 쓰면 크기가 인쇄됩니다 ... – Alex

+0

흠, 지연 확장 기능을 활성화 했습니까? 나는 그것이 당신의 모범에 있음을 알고 있지만, 당신이하지 않는 것처럼 들린다. 방금 테스트 해본 결과 나에게 잘 작동합니까? –

+0

예, 첫 번째 줄은 내 예제와 같이 첫 번째 for-loop 앞에옵니다. 그것은 내부 루프에 대한 지연된 확장을 가능하게해야합니까? 제안 된 새로운 for 문을 감안할 때'if! size! gtr 0'을 변경하고'%% ~ zi'에 대해'! size! '를 변경하겠습니까? 이 루프는 매번 한 번만 실행됩니다. 맞습니까? – Alex