2017-03-01 98 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两个实例