【发布时间】:2018-11-04 04:00:00
【问题描述】:
我正在尝试制作一个布局整齐的函数来比较两个文件夹项的脚本。程序:
- 提示用户输入文件路径
- 检查文件名是否不同
- 检查文件大小是否不同
作为一项测试,我一直在将同一个文件夹与其自身进行比较(输出应该是假的,假的)。在将第 1 步 ($referencepath) 设为函数 (FolderPrompt) 时,我的程序无法正常运行,我的意思是,我似乎每次运行它时都会得到不同的答案。
这行得通:
$referencePath = Read-Host -Prompt "Enter new DTNA folder path to check"
NameDisc
SizeDisc
function NameDisc {
write-host "Name Discrepancy: " -NoNewline
if (Compare-Object -Property name (Get-ChildItem $referencePath) - DifferenceObject (Get-ChildItem P:\DTNA_201805081923))
{return $true}
else
{return $false}
}
function SizeDisc {
write-host "Size Discrepancy: " -NoNewline
if (Compare-Object -Property length (Get-ChildItem $referencePath) - DifferenceObject (Get-ChildItem P:\DTNA_201805081923))
{return $true}
else
{return $false}
}
但这不是:
FolderPrompt
NameDisc
SizeDisc
function FolderPrompt {
$referencePath = Read-Host -Prompt "Enter new DTNA folder path to check"
}
function NameDisc {
write-host "Name Discrepancy: " -NoNewline
if (Compare-Object -Property name (Get-ChildItem $referencePath) -DifferenceObject (Get-ChildItem P:\DTNA_201805081923))
{return $true}
else
{return $false}
}
function SizeDisc {
write-host "Size Discrepancy: " -NoNewline
if (Compare-Object -Property length (Get-ChildItem $referencePath) - DifferenceObject (Get-ChildItem P:\DTNA_201805081923))
{return $true}
else
{return $false}
}
我试过了:
在调用函数之前声明它们
每次都输入
$referencePath = 0来重置值 认为这是问题所在将
Return $referencePath放在不同函数的末尾
我最好的猜测是我需要做类似function <name> ($referencePath) 的事情来传递变量(?)。
【问题讨论】:
-
我立即看到的一个问题是您在调用函数之后定义了函数。你需要在powershell中按顺序做事。
-
你在使用powershell ISE吗?
-
是的,我正在使用 ISE。另外我不在 PowerShell 要求您先调用然后定义。我已经改变了这一点,但谁能解释为什么它仍然能够运行这些功能,尽管做了相反的事情?
-
请允许我给你一个标准的建议给新手:如果一个答案解决了你的问题,请点击它旁边的大复选标记 (✓) 接受它,也可以选择给它投票(up - 投票需要 15 个或更多声望点)。如果您发现其他答案有帮助,请给他们投票。接受(您将获得 2 个声望点)和投票可以帮助未来的读者。请参阅the relevant help-center article。如果您的问题尚未得到完全解答,请提供反馈或self-answer。
标签: function powershell powershell-3.0