如何使用 JSL 直接获取指定文件夹的卷?例如这个文件夹:
C:\Windows
谢谢!
内容组织视窗Re: 如何使用 JSL 直接获取指定文件夹的卷?我不相信它可以直接推导出来。这是我想到的
Names Default To Here( 1 );
theList = Files In Directory( "C:\Windows" );
totSize = 0;
For Each( {theFile}, theList,
totSize = Sum( totSize, File Size( "C:\Windows\" || theFile ) )
);
Show( totSize );
但它似乎并不准确
Re: 如何使用 JSL 直接获取指定文件夹的卷?谢谢吉姆!
Re: 如何使用 JSL 直接获取指定文件夹的卷?Re: 如何使用 JSL 直接获取指定文件夹的卷?最好使用运行程序和一些命令来执行这种类型的检查。
使用目录中的文件,您将必须添加递归(1)(或自己执行循环,以获取文件夹中的文件)。
Names Default To Here(1);
lookup_dir = "C:\Windows\";
file_list = Files In Directory(lookup_dir, recursive(1));
file_sizes = Transform Each({cur_file}, file_list,
File Size(lookup_dir || cur_file)
);
sum(file_sizes);
https://www.jmp.com/support/help/en/17.0/#page/jmp/file-functions.shtml?os=win&source=application#ww4951479
您也可以为此使用多个文件导入目录树:探索文件夹使用的空间
Re: 如何使用 JSL 直接获取指定文件夹的卷?作为@jthi建议,这是使用 Run Program / Powershell(当然来自 JMP)的一种方法。
/*JMP STATISTICAL DISCOVERY LLC (“JMP”) PERMITS THE USE OF THIS COMPUTER SOFTWARE CODE (“CODE”) ON AN AS-IS BASIS AND AUTHORIZES YOU TO USE THE CODE SUBJECT TO THE TERMS LISTED HEREIN. BY USING THE CODE, YOU AGREE TO THESE TERMS. YOUR USE OF THE CODE IS AT YOUR OWN RISK. JMP MAKES NO REPRESENTATION OR WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRIGEMENT, AND TITLE, WITH RESPECT TO THE CODE.
You may use the Code solely as part of a software product you currently have licensed from JMP, JMP’s parent company SAS Institute Inc. (“SAS”), or one of JMP’s or SAS’s subsidiaries or authorized agents (the “Software”), and not for any other purpose. The Code is designed to add functionality to the Software but has not necessarily been tested. Accordingly, JMP makes no representation or warranty that the Code will operate error-free. JMP is under no obligation to maintain, support, or continue to distribute the Code.
Neither JMP nor its licensors shall be liable to you or any third-party for any general, special, direct, indirect, consequential, incidental, or other damages whatsoever arising out of or related to your use or inability to use the Code, even if JMP has been advised of the possibility of such damages. Except as otherwise provided above, the Code is governed by the same agreement that governs the Software. If you do not have an existing agreement with JMP or SAS governing the Software, you may not use the Code.
JMP and all other JMP Statistical Discovery LLC product or service names are registered trademarks or trademarks of JMP Statistical Discovery LLC in the USA and other countries. ® indicates USA registration. Other brand and product names are registered trademarks or trademarks of their respective companies.
*/
Names Default To Here( 1 );
op = {};
rp = Run Program(
Executable( "powershell.exe" ),
Options( "ls c:\temp\ -r | measure -sum Length" ), //Replace c:\temp\ with your folder
ReadFunction( Function( {this}, Insert Into( op, this << read ) ) )
);
for each ({i}, op,
if (word(1, i) == "Sum", totalsize = num(regex (i, "([0-9]+)")))
);
show (totalsize);回复:如何使用 JSL 直接获取指定文件夹的卷?现在 GPT-4o 功能非常强大,它可以进行普通的编程:
在win10系统中,C盘各个目录的卷大小(包括隐藏文件),具体要求是:
从 C 盘根目录开始,
1、若本目录的子目录超过3层,可以扩展到第三层目录,统计第三层目录所含各目录各自的体积
2、若此目录的子目录不超过3层,则扩展此目录至各自卷的目录最后一层的统计信息
t1=tick seconds();run program(executable("cmd.exe"),options({"/c powershell -Command \!"& {$results = @(); Get-ChildItem C:\ -Directory -Force | ForEach-Object { $topDir = $_; $subDirs = Get-ChildItem $topDir.FullName -Recurse -Directory -Force -ErrorAction SilentlyContinue | Where-Object { ($_.FullName.Split('\').Length - 1) -le 3 }; if ($subDirs) { $subDirs | ForEach-Object { $size = (Get-ChildItem $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum; $results += [PSCustomObject]@{ Path = $_.FullName; 'Size (MB)' = [math]::Round($size / 1MB, 2) } } } else { $size = (Get-ChildItem $topDir.FullName -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum; $results += [PSCustomObject]@{ Path = $topDir.FullName; ')' = [math]::Round($size / 1MB, 2) } } }; $results | Export-Csv -Path 'D:\目录大小.csv' -NoTypeInformation -Encoding UTF8}\!""}));
t2=tick seconds();t=t2-t1;回复:如何使用 JSL 直接获取指定文件夹的卷?