Powershell将子文件夹中的所有文件和子文件夹移动到当前目录
我尝试了这个,没有错误,但没有修改任何文件:Powershell将子文件夹中的所有文件和子文件夹移动到当前目录,powershell,Powershell,我尝试了这个,没有错误,但没有修改任何文件: Get-ChildItem -Path "subfolder\" -Recurse | Move-Item -Destination "." 更新:我不想要绝对路径,但想要相对路径。这看起来像是一个疯狂的尝试,老实说,这个问题并不像我想的那么全面。例如:我不确定该文件夹是否仅为1级深度,或者是否可能距离当前目录更远。不管怎么说,我得到了一些基本上可以正常工作的东西,不必费心处理递归: $SubFolder
Get-ChildItem -Path "subfolder\" -Recurse | Move-Item -Destination "."
更新:我不想要绝对路径,但想要相对路径。这看起来像是一个疯狂的尝试,老实说,这个问题并不像我想的那么全面。例如:我不确定该文件夹是否仅为1级深度,或者是否可能距离当前目录更远。不管怎么说,我得到了一些基本上可以正常工作的东西,不必费心处理递归:
$SubFolder = 'YourFolderName'
$SubFolder = Get-Item .\$SubFolder
Get-ChildItem $SubFolder |
ForEach-Object{
$Destination = $_.FullName -Replace "$($SubFolder.FullName.Replace('\','\\'))", ".\"
$NewParent = $Destination -Replace $_.Name
Move-Item $_.FullName -Destination $NewParent
}
我认为这里的诀窍是你必须转移到父母的父母那里,等等,或者不管有多少级别的备份/备份。因此,请使用当前目录语法\
找出新的父目录应该是什么。一旦你有了它,你就可以把所有的东西从第一层移到不用递归的地方Move Item
在它知道要移动整个内容的文件夹上,在子文件夹中找到的文件显然会移动到新的正确父文件夹中
我有另一个使用递归的工作版本,但这似乎更简洁,令我惊讶的是这似乎有效。然而,我对此并不感到兴奋。这似乎是一个疯狂的尝试,老实说,这个问题并不像我想的那么全面。例如:我不确定该文件夹是否仅为1级深度,或者是否可能距离当前目录更远。不管怎么说,我得到了一些基本上可以正常工作的东西,不必费心处理递归:
$SubFolder = 'YourFolderName'
$SubFolder = Get-Item .\$SubFolder
Get-ChildItem $SubFolder |
ForEach-Object{
$Destination = $_.FullName -Replace "$($SubFolder.FullName.Replace('\','\\'))", ".\"
$NewParent = $Destination -Replace $_.Name
Move-Item $_.FullName -Destination $NewParent
}
我认为这里的诀窍是你必须转移到父母的父母那里,等等,或者不管有多少级别的备份/备份。因此,请使用当前目录语法\
找出新的父目录应该是什么。一旦你有了它,你就可以把所有的东西从第一层移到不用递归的地方Move Item
在它知道要移动整个内容的文件夹上,在子文件夹中找到的文件显然会移动到新的正确父文件夹中
我有另一个使用递归的工作版本,但这似乎更简洁,令我惊讶的是这似乎有效。然而,我对此并不感到兴奋。您的答案将是:
Move-Item -Path 'subfolder\*' -Destination . -Force
这是相对的,并将处理文件夹中的所有隐藏文件。您的答案如下:
Move-Item -Path 'subfolder\*' -Destination . -Force
这是相对的,并将处理文件夹中的所有隐藏文件。您可以尝试类似于
gci.\subfolder\'-Recurse-File |%{Move Item-Path($.FullName)}
,但是如果您有同名的文件怎么办?您需要在其中提供一些错误处理吗?如果您有两个名为“file.txt”的文件,您将使用-Force标志覆盖它们。将gci对象保存到一个数组中,然后检查具有相同名称的条目,可以解决这个问题?我喜欢PowerShell,但这听起来像是RoboCopy的工作。没有?@Steven没有,我只有几个文件,但有很多次,我想把它放在配置文件中,并被其他一些powershell函数调用。还可能希望移植到powershell Linux。@ITM感谢它除了隐藏之外还能工作。git文件现在将搜索如何处理隐藏文件;)@AdminOfThings-Recurse不保留层次结构?我想我需要它来复制所有文件夹和子文件夹。你可以尝试类似于gci.\subfolder\'-Recurse-File |%{Move Item-Path($.FullName)}
,但是如果你有同名的东西呢?您需要在其中提供一些错误处理吗?如果您有两个名为“file.txt”的文件,您将使用-Force标志覆盖它们。将gci对象保存到一个数组中,然后检查具有相同名称的条目,可以解决这个问题?我喜欢PowerShell,但这听起来像是RoboCopy的工作。没有?@Steven没有,我只有几个文件,但有很多次,我想把它放在配置文件中,并被其他一些powershell函数调用。还可能希望移植到powershell Linux。@ITM感谢它除了隐藏之外还能工作。git文件现在将搜索如何处理隐藏文件;)@AdminOfThings-Recurse不保留层次结构?我想我需要它来复制所有文件夹和子文件夹。我不需要绝对路径,而是相对路径;)我不想要绝对路径,而是相对路径;)