我尝试使用 PowerShell 为以下文件创建一个文件夹
4_2017-07-16_01-22-52.mp4
4_2017-07-16_01-23-50.mp4
4_2017-07-16_01-24-54.mp4
4_2017-07-16_01-26-21.mp4
我用的是这个方法
https://stackoverflow.com/a/41468253/13002495
问题是它将创建一个目录4然后将文件移动到其中我需要有一个如下所示的目录
4_2017-07-16 或类似 4_2017_07_16 的目录
这是第一种方法。
第二种方法,如果你可以帮助有一个脚本来创建以下目录
2017目录,然后是子目录02,然后是子目录16,然后是子目录4,然后将文件移动到子目录4
因此将如下所示
2017
--------07
------------16
---------------------04 ----> files will be here
这两种方法你能帮忙吗?
最佳答案
你可以尝试这样的事情:
$folder = 'FILES_FOLDER'
Get-ChildItem -Path $folder | ForEach-Object {
$subFolders = $_.Name.Split("-_")
$path = Get-Location
$order = 1, 2, 3, 0
$order | ForEach-Object {
$path = Join-Path -Path $path -ChildPath $subFolders[$_]
if (-not (Test-Path -Path $path -PathType Container)){
New-Item -Path $path -ItemType Directory
}
}
Move-Item -Path $_.FullName -Destination $path
}
这会将所有文件移动到:
2017/07/16/4/4_2017-07-16_01-22-52.mp4
2017/07/16/4/4_2017-07-16_01-23-50.mp4
2017/07/16/4/4_2017-07-16_01-24-54.mp4
2017/07/16/4/4_2017-07-16_01-26-21.mp4
说明:
- 使用
Split
拆分"-"
和"_"
上的文件。可以看看about_split
了解更多信息。 - 使用
Get-Location
获取当前文件夹路径,用于附加到当前路径以创建子目录。 - 创建一个
$order
数组以创建正确的子文件夹顺序,如问题所示。 - 迭代此
$order
数组并创建新目录(如果不存在)。可以使用Test-Path
检查子文件夹是否存在,以及New-Item
创建一个新目录。 - 使用
Move-Item
将文件移动到最终子目录。这些子目录将位于您当前的工作目录中。显然,您也可以将其更改为另一个目录位置。
关于windows - 根据包含 2 个下划线的文件名创建一个文件夹,然后将该文件放入该文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60517132/