【发布时间】:2016-03-28 14:56:27
【问题描述】:
有人问过这个问题,但我发现的所有问题都没有完全回答我想要做的事情。我正在使用 PowerShell(对它来说是全新的)编写一个脚本,该脚本将搜索目录中的子目录,如果找到,则将其移动到指定目录。
我的问题在于以下代码:
$Folders = C:\Users\temp
$MoveFolders = Test-Path $Folders -PathType Container
Write-Host $MoveFolders
#I'm writing this with ISE, so I'm using write-host to view output for testing.
我遇到的问题是,每次运行此代码时,它都会返回 true,即使临时目录中没有文件夹也是如此。我已经用我能想象到的所有可能的方式进行了尝试,并使用带有 where 对象的 get-childitem 进行了测试,但我只想在存在子目录的情况下执行移动。
其背后的想法是,如果用户以某种方式将文件或文件夹添加到该特定文件或文件夹,则在任务调度程序运行脚本时它将被移动。
编辑 重定向我的问题;它总是返回 true,并且有几个人指出我所写的将测试临时文件夹本身;那么有没有办法测试任何子文件夹并将其存储为布尔值,然后我可以将其传递给将完成移动过程的 if 语句?
【问题讨论】:
-
您正在测试
C:\Users\temp目录的存在。试试Get-ChildItem C:\Users\temp\* | Where-Object {$_.PsIsContainer} -
是的,我认为我的问题本身并不彻底;您的建议可行,但我真正想做的是存储一个布尔值并将其传递给 if 语句,该语句将进行更改。这可能吗?
标签: powershell