我是脚本世界的新手,所以可能会问一些新手问题,但是经过这么多谷歌搜索后我找不到确切的代码。
我的要求是生成一个脚本,将X个文件从一个文件夹复制到另一个文件夹。这里应该在脚本中配置要复制的文件数,源文件和目标文件夹。
我尝试了Xcopy,Robocopy,但没有找到任何参数来限制要复制的文件数量。该程序将在Win7或Win2008服务器上运行。
请帮忙。
答案 0 :(得分: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
答案 1 :(得分:2)
我必须说我同意vonPryz的观点。这看起来很奇怪。但是,在PowerShell中执行所需操作非常容易。只需抓住您想要使用的物品数量:
$sourceFolder = "D:\source"
$destinationFolder = "D:\copiedfiles"
$maxItems = 200
Get-Childitem $sourceFolder | Select-Object -First $maxItems | Copy-Item $destinationFolder
如果目标文件夹不存在,这甚至会创建它。
答案 2 :(得分: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
与适当的参数/过滤器一起使用,并将其结果存储在数组中。
答案 3 :(得分:0)
顺便说一句......上面的PowerShell会抛出关于不接受管道输入的命令的异常。您需要复制每个对象,因此正确的命令是:def replace_str(base, target, rep):
m = 0
n = len(target)
if base[m:n] == target:
new_base = base[0:m] + rep + base[n:]
return replace_str(new_base, target, rep)
else:
m = m + 1
n = n + 1
return replace_str(base, target, rep)