我是脚本世界的新手,所以可能会问一些新手问题,但经过这么多谷歌搜索后我没有找到确切的代码。
我的要求是生成一个脚本,将 X 个文件从一个文件夹复制到另一个文件夹。这里要复制的文件数量、源文件夹和目标文件夹应该可以在脚本中配置。
我尝试了 Xcopy、Robocopy,但没有找到任何参数来限制要复制的文件数量。该程序将在 Win7 或 Win2008 服务器上运行。
请帮忙。
我是脚本世界的新手,所以可能会问一些新手问题,但经过这么多谷歌搜索后我没有找到确切的代码。
我的要求是生成一个脚本,将 X 个文件从一个文件夹复制到另一个文件夹。这里要复制的文件数量、源文件夹和目标文件夹应该可以在脚本中配置。
我尝试了 Xcopy、Robocopy,但没有找到任何参数来限制要复制的文件数量。该程序将在 Win7 或 Win2008 服务器上运行。
请帮忙。
我必须说我同意 vonPryz 的观点。这似乎很奇怪。但是,在 PowerShell 中执行您需要的操作非常容易。只需获取您想要使用的项目数量:
$sourceFolder = "D:\source"
$destinationFolder = "D:\copiedfiles"
$maxItems = 200
Get-Childitem $sourceFolder | Select-Object -First $maxItems | Copy-Item $destinationFolder
如果它不存在,这甚至会创建目标文件夹。
对于批处理文件标签:
@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
与提出要求的人讨论并找出确切的过滤需求。
这样做毫无意义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
与适当的参数/过滤器一起使用并将其结果存储在数组中。
顺便说一句...上面的 PowerShell 将抛出关于命令不接受管道输入的异常。您需要复制每个对象,因此正确的命令是:Get-Childitem $sourceFolder | ForEach-Object {Select-Object -First $maxItems | Copy-Item $destinationFolder}