0

我是脚本世界的新手,所以可能会问一些新手问题,但经过这么多谷歌搜索后我没有找到确切的代码。

我的要求是生成一个脚本,将 X 个文件从一个文件夹复制到另一个文件夹。这里要复制的文件数量、源文件夹和目标文件夹应该可以在脚本中配置。

我尝试了 Xcopy、Robocopy,但没有找到任何参数来限制要复制的文件数量。该程序将在 Win7 或 Win2008 服务器上运行。

请帮忙。

4

4 回答 4

3

我必须说我同意 vonPryz 的观点。这似乎很奇怪。但是,在 PowerShell 中执行您需要的操作非常容易。只需获取您想要使用的项目数量:

$sourceFolder = "D:\source"
$destinationFolder = "D:\copiedfiles"
$maxItems = 200
Get-Childitem $sourceFolder | Select-Object -First $maxItems | Copy-Item $destinationFolder

如果它不存在,这甚至会创建目标文件夹。

于 2013-11-08T15:12:32.687 回答
3

对于批处理文件标签:

@echo off

    setlocal enableextensions enabledelayedexpansion

    set "source=d:\temp\input"
    set "target=d:\temp\output"
    set num=10

    for /F "tokens=1,2 delims=:" %%f in ('dir /b /a-d "%source%\*"  ^| findstr /n "^" ') do (
        if %%f leq %num% (
            copy "%source%\%%g" "%target%" /y > nul 
        ) else goto endCopy
    )

:endCopy
    endlocal
于 2013-11-08T09:42:44.463 回答
1

与提出要求的人讨论并找出确切的过滤需求。

这样做毫无意义copy N files from location X to location Y。通常有一个更明智的标准,比如copy all files that are changed after DATETIME from location X to location Y. If there are more than N files, pick only N oldest/newest.只有利益相关者可以告诉你期望什么样的行为。如果没有更多信息,该脚本不太可能提供预期的功能。

在你知道确切的要求之后,再做一些谷歌搜索以寻求解决方案。找出如何在 Powershell 中完成任务不应该花费太多精力。提示:gci与适当的参数/过滤器一起使用并将其结果存储在数组中。

于 2013-11-08T06:42:24.097 回答
0

顺便说一句...上面的 PowerShell 将抛出关于命令不接受管道输入的异常。您需要复制每个对象,因此正确的命令是:Get-Childitem $sourceFolder | ForEach-Object {Select-Object -First $maxItems | Copy-Item $destinationFolder}

于 2015-07-06T04:40:16.213 回答