尝试创建随机 N 级深度的虚拟文件、目录和子目录。
每个目录/子目录中都应该有文件。
我可以提供一个目录并获取创建的包含随机文件的随机文件夹,但是在循环深入 N 层时遇到了麻烦。
以下是我所拥有的:
function New-DemoData ($Path)
{
# Usage: New-DemoData “D:\Company”
Push-Location
1..10 | % { Set-Location -Path (New-Item -ItemType directory -Name $([System.Guid]::NewGuid().ToString()) -path "$path\").fullname -ErrorAction SilentlyContinue
for ( $i=1; $i -le (Get-Random -Minimum 10 -Maximum 200); $i++ )
{
#2147483648 bytes = 2GB
#20971520 = 20MB
fsutil file createnew ($([System.Guid]::NewGuid().ToString()) + ".txt") (Get-Random -Minimum 1024 -Maximum 20971520)
}
}
Pop-Location
}
答案1
有几个技巧可以让你简化你的代码。
只要指定了完整的路径,您就可以在一个命令中创建任意深度的嵌套文件夹。例如,如果您的文件c:\scratch
夹下面没有任何内容,New-Item -Type Directory c:\scratch\foo\bar\baz
则会创建foo\bar\baz
子目录。
这将允许您删除推送和弹出位置的逻辑,并且您的循环可以通过重复附加到字符串来简单地在字符串中创建目录名称,并像以前一样在每个目录中创建文件。
第二个小技巧是使用 PowerShell 的数字单位。您可以使用以下注释来指定文件随机大小的“魔法数字”,而不是使用:(Get-Random -Minimum 1KB -Maximum 20MB)