第一个脚本从目录的用户处获取输入:例如:D:\Test1 D:\Test2
$Dir1=Read-Host -Prompt "Enter first location" |Out-file -FilePath .\directories.csv -Append
$Dir2=Read-Host -Prompt "Enter 2nd location (or leave blank)" |Out-file -FilePath .\directories.csv -Append
在第二个脚本中,我有:
$Dir=Import-Csv 'D:\directories.csv'
$Dir[0]
但它没有正确打印出来(打印所有目录而不是一个)我需要将每个目录分配给不同的变量
PS 初学者在这里请简单解释一下
这是我的看法:
提示循环中的路径并以数组形式收集,直到没有条目为止:
$DirPaths = @()
Do {
$DirPaths += Read-Host -Prompt "Enter path (leave blank to end)"
} Until ($DirPaths[-1] -eq '')
将除空字符串以外的所有元素保存到文本文件中:
$DirPaths.Where({ $_ -eq '' }, 'Until') | Set-Content .\DirPaths.txt
每行一个 sngle 元素且没有标题行,就不需要 .csv
用于Get-Content
以路径数组的形式检索文件
$Dir = Get-Content .\DirPaths.txt
然后,您可以获得路径计数并单独访问,如下所示:
$Dir.Count
$Dir[0]
>$DirPaths = @()
>> Do {
>> $DirPaths += Read-Host -Prompt "Enter path (leave blank to end)"
>> } Until ($DirPaths[-1] -eq '')
Enter path (leave blank to end): Path1
Enter path (leave blank to end): Path2
Enter path (leave blank to end): Path3
Enter path (leave blank to end):
PS C:\...\Sandbox>$DirPaths.Where({ $_ -eq '' }, 'Until') | Set-Content .\DirPaths.txt
PS C:\...\Sandbox>$Dir = Get-Content .\DirPaths.txt PS C:\...\Sandbox>$Dir.Count
3
PS C:\...\Sandbox>$Dir[0]
Path1
PS C:\...\Sandbox>
此代码使用以下BrowseForFolder
方法:
$Shell = New-Object -ComObject shell.application
$Folders = @()
Do {
$Folders += $Shell.BrowseForFolder( 0, 'Prompt', 0, 17 )
} Until ( $Null -eq $Folders[-1] )
$Folders.Self.Path | Set-Content .\DirPaths.txt
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句