我在一个目录中有250.000个文件。
这些文件都在格式将文件批量复制到与文件名匹配的新目录
1a.jpg
1b.jpg
1c.jpg
...并上升到1f.jpg那么这个数是由一个
2a.jpg
2a.jpg
2c.jpg
增加...等等。
现在我想将所有以1开头的文件复制到一个名为1的新目录中,
以2开头的所有文件到目录2等等。
任何人都可以帮忙吗?
我在一个目录中有250.000个文件。
这些文件都在格式将文件批量复制到与文件名匹配的新目录
1a.jpg
1b.jpg
1c.jpg
...并上升到1f.jpg那么这个数是由一个
2a.jpg
2a.jpg
2c.jpg
增加...等等。
现在我想将所有以1开头的文件复制到一个名为1的新目录中,
以2开头的所有文件到目录2等等。
任何人都可以帮忙吗?
你可以试试这个“老土”。BAT批处理文件,如果你想:
@echo off
setlocal EnableDelayedExpansion
for %%f in (*.jpg) do (
set dir=%%~Nf
set dir=!dir:~0,-1!
if not exist !dir! md !dir!
copy %%f !dir!
)
复制此批处理文件所在的目录文件驻留并执行它。它将创建同一级别的新目录,但您可以轻松修改此目录。
集团所有通过的第一个字符的文件,然后各组复制到目标文件夹:
Get-ChildItem -Filter *.jpg | Group-Object {$_.Name[0]} | Foreach-Object { $_.Group | Copy-Item -Destination "C:\test\$($_.Name)" }
编辑:这应该更快地执行:
Get-ChildItem *.jpg | Copy-Item -Destination { "C:\test\$($_.Name[0])" }
它不起作用。是我的文件应该在哪里的C:\测试? – user1197199 2012-02-08 14:46:12
c:\ test是所有目标文件夹应存在的位置。 – 2012-02-08 14:54:33
尝试:
dir -filter *.jpg | % { Copy-Item -PATH $_ -DESTINATION .\$($_.BaseName.ToCharArray()[0]) }
这样,目标文件夹必须存在!
我创建了一些目录1,2和3,但运行命令时没有任何反应 – user1197199 2012-02-08 14:47:34
执行命令时是否在源文件夹中? – 2012-02-08 14:56:04
如果你有一个目录名ň [A-F] .JPG 250000页的文件,我希望ň去从1至41,667你想有41,667目录数6个JPG文件。如果是这样的话,这里是我的解决方案,一个涉及多一点:
最后,该项目被复制到目标文件夹。
Get-ChildItem *.jpg | ForEach-Object {
$destination = $_.FullName -replace '[a-f]\.jpg'
if (-not (Test-Path -Path $destination -PathType Container)) {
$null = New-Item -Path $destination -ItemType directory
}
Copy-Item -Path $_.FullName -Destination $destination
}
这与我想要的完全一样!非常感谢 – user1197199 2012-02-09 09:27:18