2017-09-19 118 views
0

我正嘗試構建一個批處理腳本來顯示文件夾中包含的大於1 MB的文件,僅供練習。除了腳本處理「c」環境變量就好像它不存在一樣,一切都很好。我用echo %c%取代了if語句,結果是echo是off,意思是「c」不存在。環境變量和&&參數

我該如何克服這一點,如果有另一種方法可以做到這一點,那也會很棒。順便謝謝你的時間。

@echo off 
set /p a=Enter the extension 
cd %~dp0 
for /r %%T in (*.%a%) do set /a "c=%%~zT/(1024*1024)" && if %c% geq 1 echo %%~fT is greater than 1 MB 
+3

研究延遲擴展 – Compo

+0

SETLOCAL ENABLEDELAYEDEXPANSION – lit

+0

OK鍵進入賬套的新價值!延期擴張是怎麼做的呢 – TahaEltahawy

回答

0

正如人們說delayedexpansion是我如何解決問題。這將是這樣的。 !c!所使用SET語句

@echo off 
setlocal enabledelayedexpansion 
set /p a=Enter the extension 
cd %~dp0 
for /r %%T in (*.%a%) do set /a "c=%%~zT/(1024*1024)" && if !c! geq 1 echo %%~fT is greater than 1 MBs 
+0

爲什麼不簡單'如果%%〜zi geq 1048576 ...'? – Stephan

+0

不應該讀'MiB'而不是'MB'?見[本維基百科文章](https://en.wikipedia.org/wiki/Mebibyte) – Stephan