我使用以下代码通过Windows窗体“浏览”功能选择文件夹,然后将该路径传递到gci cmdlet
cls
Function Get-Directory($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null
$OpenfolderDialog = New-Object System.Windows.Forms.FolderBrowserDialog
$OpenfolderDialog.RootFolder = $initialDirectory
$OpenfolderDialog.ShowDialog()| Out-Null
$StartDir = $OpenfolderDialog.SelectedPath
Return $StartDir | Out-String
}
$myDir = Get-Directory -initialDirectory "Desktop"
$Child = gci -path $mydir -r -Filter *.jpg
Foreach ($item in $Child) {Move-Item -path $item.pspath -Destination $myDir -Force}
但我得到了这些错误:
在 C:\测试\合并图片2.ps1:17 字符:13 $Child = gci
Move-Item:无法将参数绑定到参数“Path ”,因为它为空。在C:\ Test \ Combine pics 2 . PS1:19 char:43 Foreach($ Item in $ Child){ Move-Item-path
$myDir变量的类型为字符串,为什么它不传递给 -path 参数。
我在< code>$mydir值的末尾得到了一个换行符和回车符,所以尝试用类似这样的东西进行修整,看看这是否是您的问题:
$Child = gci -path $mydir.Trim("`r`n") -r -Filter *.jpg
更新:更好的是,只需丢失函数中的“Out-String”
:
Return $StartDir
试试这个:
Function Get-Directory($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
$OpenfolderDialog = New-Object System.Windows.Forms.FolderBrowserDialog
$OpenfolderDialog.RootFolder = $initialDirectory
if ($OpenfolderDialog.ShowDialog() -eq "OK") {
#Continue only if a folder was selected
$OpenfolderDialog.SelectedPath
}
}
$myDir = Get-Directory -initialDirectory "Desktop"
#Continue only if a folder was selected
if($myDir) {
$Child = Get-ChildItem -path $mydir -Recurse -Filter *.jpg
Foreach ($item in $Child) {
Move-Item -path $item.pspath -Destination $myDir -Force
}
}
我用一些if测试来清理它,这样当人们取消对话框时它不会返回错误。不需要<code>输出字符串
如果用户取消了对话框怎么办?尝试一下:
Function Get-Directory($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenfolderDialog = New-Object System.Windows.Forms.FolderBrowserDialog
$OpenfolderDialog.RootFolder = $initialDirectory
$result = $OpenfolderDialog.ShowDialog()
if($result -eq 'ok')
{
$OpenfolderDialog.SelectedPath
}
else
{
"canceled"
}
}
$mydir = Get-Directory -initialDirectory Desktop
if($mydir -ne 'canceled')
{
gci -path $mydir
}
问题内容: 你好!今天,我学习了在mssql中连接字符串的技术。由于我从未在mssql中使用过xml,而google却没有帮助,所以我需要问你。 让我们想象一下默认情况。我们需要连接表中的一些字符串: 所以我得到这样的东西: 好的。它工作正常。但是我有两个非常相似的连接块。区别只是结果字符串看起来像这样: 和 因此,我可以使用不同的字符串构造函数编写2个非常相似的代码块(已经完成,btw),或尝试
这个奇怪的小脚本的要点只是让我选择一个目录,并将剪贴板中的任何内容写入该路径中的文本文件。不幸的是,此路径将始终包含括号、方括号,有时还包含大括号。 由于子文件夹中的括号,我得到了以下错误消息 使用 ' 或 \ 来解释转义字符的 -replace 组合数量都不会成功。如何格式化字符串以使其解析为真实目录? 第二个问题有没有办法用更用户友好的文件浏览器对话框来选择路径,而不是不能输入或粘贴路径的文件
我的bash脚本接收一个字符串形式的文件名(或相对路径),但是必须从该文件中读取。如果我在脚本中将文件名直接声明为文字(没有引号),我就只能从文件名中读取...这对于参数来说是不可能的,因为它们一开始就是隐式字符串。观察: 产量: 如上所述,我无法将命令行参数传递给上述例程,因为我得到的行为与引用字符串上的行为相同。
问题内容: 有人告诉我不能更改Java中的字符串。下面的代码呢? 它不改变字符串吗?另外,replace()的实现在哪里;相比于(); 等于(); 提供?我只是在这里使用这些功能,但实际上在哪里实现? 问题答案: String.replace()返回一个新的String。 “名称”是对String对象的引用,因此可以将其重新分配为指向name.replace(),但它将指向一个新对象。 这是Str
假设我有以下片段: 我希望这段代码能够显示: 这使我认为运算符不适合连接字符串和变量。 您应该如何使用PowerShell来实现这一点?
我正在尝试使用PowerShell进度条,但-status参数未按公布的方式工作(或者我错误地阅读了文档)。 为了简单起见,假设我有一个集合: ...我有另一种方法可以迭代这个集合。但是当它迭代时,处理需要很长时间。所以我想通过在循环中调用来给用户状态。 这是进步的代码。 这与: https://blogs.technet.microsoft.com/heyscriptingguy/2011/01