正如标题所说。
我有几个if语句;"测试路径";所以如果我马上声明变量会更好。
$jobs = Get-ChildItem d:Path* -recurse -include *.pdf,*.idx |
Select-Object -expand basename |
Sort-Object
$jobs | foreach-object{
if ((test-path d:Path$_.idx) -and (test-path d:path$_.pdf)){
move-item d:Path$_.idx d:Path
move-item d:path$_.pdf d:Path
}
else {
....
}
}
文件名一直在变化。这就是我使用"$_"的原因。pdf";例如这只是一个简单的例子。再添加一个文件扩展名,是的。代码的功能类似于";如果pdf和idx的基本名称是真/相等的,则将它们"移动";
这完全可以,只是为每个if语句添加路径会使其更加混乱。如有任何帮助,我们将不胜感激。提前感谢!
Test-Path
可以接受一组要测试的项目。当这样使用时,它将返回一个布尔值数组。如果该数组至少包含一个$false
,则至少缺少一个文件。如果没有,则所有文件都存在。
一个例子是这样的,
# Create a few test files
set-content foo.idx ''
set-content foo.dpf ''
set-content foo.pub ''
# Instead of foo, you'd populate $s with file's basename
# and use a foreach loop
$s ="foo"
# Test if the trio exists. Note variable $s that contains the basename
if( (Test-Path @(".$s.idx", ".$s.dpf", ".$s.pub")) -contains $false){
"nay" # Go here if there was at least one false
}else{
"aye" # go here if all were true
}
# Output
aye
# Change one extension, so trio doesn't exist
if( (Test-Path @(".$s.idx", ".$s.dpf", ".$s.bub")) -contains $false) {
"nay" # Go here if there was at least one false
}else{
"aye" # go here if all were true
}
# Output
nay
我很笨。我只需要把$path$_.pdf
放在那里。是吗