Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如果日志文件的大小大于_Batch File - Fatal编程技术网

Batch file 如果日志文件的大小大于

Batch file 如果日志文件的大小大于,batch-file,Batch File,您好,我正在尝试创建一个批处理脚本来删除应用程序中的日志文件。如果文件大小更大,下面是我的代码。我在第二次“pushd”之后出现语法错误 for/fp存储文件的内容,而不是您想要的内容。对使用普通的: for %%A in ("%file%") do set size=%%~zA 请准确复制此代码并重试 @echo off setlocal enabledelayedexpansion pushd "C:\Program Files\temp\Logs" for /f "skip=10 eo

您好,我正在尝试创建一个批处理脚本来删除应用程序中的日志文件。如果文件大小更大,下面是我的代码。我在第二次“pushd”之后出现语法错误


for/f
p存储文件的内容,而不是您想要的内容。对使用普通的

for %%A in ("%file%") do set size=%%~zA

请准确复制此代码并重试

@echo off
setlocal enabledelayedexpansion
pushd "C:\Program Files\temp\Logs" 
for /f "skip=10 eol=: delims=" %%F in ('dir /b /o-d E*.log') do @del "%%F" 
for /f "skip=10 eol=: delims=" %%F in ('dir /b /o-d A*.log') do @del "%%F" 
popd
sleep 1
pushd "C:\Program Files\temp\modules\Logs"
set file="P*.log"
set "maxbytesize=10"
for %%A in ("%file%") do (
   set size=%%~zA
   if !size! GTR %maxbytesize% del "%%A"
)

当我删除/f时,我得到“usebackq”是意外的error@spiky是的,正如斯蒂芬所说的那样仔细地看答案。“他的回答毫无用处。”格哈德谢谢你的强调。但是,即使在上述更改之后,我也会遇到语法错误什么语法错误?您是否运行并读取了内容?请注意,由于cmd的32位数学限制,这将无法处理大于2GB的文件。exe@LưuVĩnhPhúc我处理的文件大小不超过100MByeah,只要您知道限制就可以了(如果%%za GTR…
?)如何?@Gerhard我按原样尝试了代码。我没有看到任何错误。但它并没有删除大小超过10kb的日志文件。@spiky已编辑,请复制整个代码,我注意到您在设置maxbytesize=10@GerhardBarnard:这里的引号是个坏主意:它们强制进行字符串比较,其中
2
大于
100000
@spiky:note,
%%~zA
以字节为单位给出大小(不是像你想象的那样,是千字节)。
@echo off
setlocal enabledelayedexpansion
pushd "C:\Program Files\temp\Logs" 
for /f "skip=10 eol=: delims=" %%F in ('dir /b /o-d E*.log') do @del "%%F" 
for /f "skip=10 eol=: delims=" %%F in ('dir /b /o-d A*.log') do @del "%%F" 
popd
sleep 1
pushd "C:\Program Files\temp\modules\Logs"
set file="P*.log"
set "maxbytesize=10"
for %%A in ("%file%") do (
   set size=%%~zA
   if !size! GTR %maxbytesize% del "%%A"
)