Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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
如何仅使用windows命令shell查找文件大小?_Windows_Batch File_Cmd_Filesize - Fatal编程技术网

如何仅使用windows命令shell查找文件大小?

如何仅使用windows命令shell查找文件大小?,windows,batch-file,cmd,filesize,Windows,Batch File,Cmd,Filesize,我正在尝试编写一个脚本,检查文件大小是否大于0,如果大于0,则打印“更大”。我看了这个问题,有了一些好主意。我试图实现第二个回答者的回答,但没有正常工作 这就是我到目前为止所做的: for %%i in (*.txt) do ( set size=0 set /A size=%%~zi echo %%i %size% if %size% GTR 0 echo greater ) 当我尝试这个方法时,所有文件的大小都是一样的,尽管我知道其中一个文件是不同的。当我删除set size=0时,如果文

我正在尝试编写一个脚本,检查文件大小是否大于0,如果大于0,则打印“更大”。我看了这个问题,有了一些好主意。我试图实现第二个回答者的回答,但没有正常工作

这就是我到目前为止所做的:

for %%i in (*.txt) do (
set size=0
set /A size=%%~zi
echo %%i %size%
if %size% GTR 0 echo greater
)
当我尝试这个方法时,所有文件的大小都是一样的,尽管我知道其中一个文件是不同的。当我删除
set size=0
时,如果文件大小为0,则会出现错误
0此时是意外的。


有没有关于我做错了什么的想法?

我不知道为什么会出现问题,但这段代码起作用了

for %%i in (*.txt) do (
echo %%i %%~zi
echo %%~zi
if %%~zi GTR 0 echo greater
)
我认为这与%size%变量被替换和重置的时间有关。我仍然想用一个变量名替换
%%~zi
,但如果它有效,我想我会保留它。

试试这个命令:

for %%I in (*.txt) do @echo %%~znI
在Windows 7上运行此操作时,我得到以下结果:

C:\Users\Leniel\Desktop>for %I in (*.txt) do @echo %~znI
14 test1
34 test2

其中14和34是以字节为单位的文件大小…

下面介绍如何在PowerShell中执行此操作。我希望它能说服您升级到更现代的外壳:

PS C:\test> Get-ChildItem *.txt | ForEach-Object { Write-Host $_.name, $_.length }
test.txt 16
test2.txt 5

如果要在
块的
中使用实际环境变量,则需要延迟扩展:

setlocal enabledelayedexpansion

for %%i in (*.txt) do (
  set size=0
  set /A size=%%~zi
  echo %%i !size!
  if !size! GTR 0 echo greater
)
还请注意,您需要将
%size%
替换为
!尺寸
触发延迟扩展而不是正常扩展

问题是当解析语句时,普通的环境变量会被扩展;在这方面,
块的
是一个单独的语句。因此,一旦循环运行了
size
的值,就可以使用循环了

延迟扩展(使用
)将在执行之前而不是在解析语句时扩展变量,以便您可以从循环中看到更新的值。

robocy/L(您想要的大小的目录)(C:\arbitral folder)/日志:(C:\arbitral folder\robolog.txt)

将创建一个大小为 findstr字节C:\robocopylog.txt>>getsize.txt

您可以使用/?帮助导航到getsize.txt的最后一个条目,该条目应包含整个目录的大小。 你将不得不处理它是k代表千兆字节还是g代表千兆字节,这是可以解决的,因为robocopy使用0作为占位符,所以你只需要获得最后一行的第三和第四个令牌。514.46米