2017-03-01 86 views
0
echo off 
SETLOCAL EnableDelayedExpansion 
set caminho="C:\Users\%username%\AppData\Local\Microsoft\Outlook" 

set maxbytesize=10 



for /F %%i in ('dir /b "C:\Users\%username%\AppData\Local\Microsoft\Outlook\*.ost"') do (


    set directoria=%caminho%\%%i 

%1 %0 :: %directoria% 
set len=%~z2 

if %len% LSS %maxbytesize% (
msg * algo 
PAUSE 

) ELSE (
msg * O ficheiro exedeu 29Gb, diriga-se a Informatica 

) 

) 

我不太擅長這個,所以我需要一些幫助。 我有一個類似的代碼可以工作,但是當我「變形」成這個時,它開始說10 is not expected是10的%maxbytesize%。 有一些方法可以使這項工作或我需要重新開始?找不到數字變量

+2

本質上與http://stackoverflow.com/questions/42438092/batch-file-to-check-file-with-the-same-extension相同。問題是「延遲擴展」 - 請搜索許多關於此的文章。根本的問題是,當'for/f'到達時'len'是未定義的,所以它被替換爲* nothing *,這違反了'if'語句的語法。我不知道'%1%0 ::%directoria%'應該達到什麼,因爲你沒有提供你正在使用的參數。 – Magoo

+0

[此問題](http://webcache.googleusercontent.com/search?q=cache:aW-mXC4F_lkJ:stackoverflow.com/questions/42420902/way-of-batch-file-check-various-file-with-這個同樣的擴展+&cd = 3&ct = clnk)似乎以前已經被問過了,現在不再可用了。 – Compo

回答

0

沒有這些變量都需要設置,因爲它們不使用的代碼外或內碼操作:

@Echo Off 
Rem If "%~1"=="" Exit/B 

Set "MaxByteSize=31138512896" 

For %%A In ("%LocalAppData%\Microsoft\Outlook\*.ost") Do (
    Rem "%~1" "%~f0" :: "%%~fA" 
    If %%~zA Lss %MaxByteSize% (msg * algo) Else (
     msg * O ficheiro exedeu 29Gb, diriga-se a Informatica)) 

如果你真的用一個參數運行腳本,然後刪除的Rem兩個實例