【发布时间】:2019-08-28 20:58:57
【问题描述】:
处理脚本以根据文件名的子字符串将文件复制到特定的现有文件夹。
文件以年份和月份数字结尾的格式命名,例如:
RawData_MJE_2019_7.xlsx Checklist_2019_7.xlsx RawData_MJE_2019_6.xlsx Checklist_2019_6.xlsx
我有以类似格式命名的现有目标目录,例如:
C:\Save\2019_7 C:\Save\2019_8
希望将文件名中包含年份和月份的源文件复制到名称相似的目标目录?所以任何包含 2019_7 的源文件都会被复制到 C:\Save\2019_7 文件夹中。
我在复制项目上遇到错误;想知道这是否是由于目标目录的文件夹名称中的空格:
$SourceFolder = "C:\Users\hy85170\Documents\VBTemp\Output\Formatted"
$TargetFolder = "C:\Users\hy85170\OneDrive - Chemours\Documents\Chemours\CONTROLLERSHIP\Data Analytics\MJE\0. Data\1. Output Files\To Upload"
$Files = Get-ChildItem $SourceFolder | where {$_.extension -in ".xlsx"} | select -expand basename
Foreach ($File in $Files)
{
$Year = $File.Substring(0,4)
$Month = $File.Substring(4,1)
$Directory = $TargetFolder + "\" + $Year+$Month
$files | Copy-Item -Destination $Directory
}
错误:
Copy-Item : Cannot find path 'C:\Users\hy85170\RawDataWhole_MJE_2019_7' because it does not exist. At C:\Users\hy85170\Desktop\VBTemp\VBScripts\CopyOutputFiles.ps1:11 char:11 + $files | Copy-Item -Destination $Directory + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (C:\Users\hy85170\RawDataWhole_MJE_2019_7:String) [Copy-Item], ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
【问题讨论】:
-
1.为什么你发布一个新问题而不是编辑你的previous one?只要您的编辑正常,无论如何都会重新打开它。 2、你发的代码绝对不是batch-file! 3.您的代码没有反映您描述的目的地位置!
-
1) 我没有看到编辑原始帖子的方法 - 它说它已关闭; 2) 是的,我意识到这不是一个批处理文件——请原谅我不小心没有更改标签; 3) 是的,我意识到我描述的位置与目的地不同——它是我想要做的一个简单的例子。 4)还有什么问题要骂我吗?
-
1.编辑按钮(我什至在原始问题中链接)仍然可用;当问题成为话题时,有一个重新开放的投票系统(就像关闭一样)。 2. 无论如何现在修复;请注意,标签对于吸引适当的观众回答您的问题很重要(您至少应该真正使用tour)。 3. 示例和代码应该匹配,以便潜在的回答者可以轻松地试验您的脚本和数据;对他们来说越容易,您就越有可能得到满意的答案。 4.没有理由感到沮丧......
-
您在复制命令中使用了
$Files[复数形式]。这不是您用于当前循环项目的名称。 [grin] ///// 您扩展了文件 basename,然后在复制之前不要重新添加扩展名。这会使您的复制命令失败,因为源位置中没有此类文件。
标签: powershell