PowerShell中的自定义robocopy脚本

PowerShell中的自定义robocopy脚本,powershell,robocopy,Powershell,Robocopy,我想将源目录中的所有.txt文件(包括子文件夹中的.txt文件)移动到目标目录 例如: 源目录:D:\officework\robtest\test1 上面的目录还包含许多子文件夹 目标目录:D:\OFFICE work\robtest\test2 我只想将source dir中的.txt文件移动到上述目标目录,这样目标目录中的每个子文件夹(包括随机文件夹创建)只能有3个.txt文件 下面是我尝试过的代码,但是PowerShell说 文件名、目录名或卷标语法。(D:\OFFICE work\ro

我想将源目录中的所有.txt文件(包括子文件夹中的.txt文件)移动到目标目录

例如: 源目录:
D:\officework\robtest\test1

上面的目录还包含许多子文件夹

目标目录:
D:\OFFICE work\robtest\test2

我只想将source dir中的.txt文件移动到上述目标目录,这样目标目录中的每个子文件夹(包括随机文件夹创建)只能有3个.txt文件

下面是我尝试过的代码,但是PowerShell说

文件名、目录名或卷标语法。(D:\OFFICE work\robtest\test1\testtest\Test2\ 新文件夹\test01112.txt\)不正确

我不知道为什么在robocopy中的上述路径之后会有额外的“/”

$fileperfolder=3
$source=“D:\OFFICE work\robtest\test1”;
$dest=“D:\OFFICE work\robtest\test2”;
$folderName=[System.IO.Path]::GetRandomFileName();
$fileList=Get ChildItem-Path$source-Filter*.txt-Recurse
写入主机$fileList
$i=0;
foreach($fileList中的文件){
$destiny=$dest+“\”+$folderName
写入主机$file.FullName;
写下主人的命运;
新物品$destiny-类型目录-强制
robocopy$file.FullName$destiny/mov
$i++;
如果($i-eq$fileperfolder){
$folderName=[System.IO.Path]::GetRandomFileName();
$i=0;
}
}
您将得到错误(以及输出中的“目录”),因为
robocopy
要求两个文件夹作为第一个参数和第二个参数,可以选择后跟文件名规范列表,但您提供了文件路径作为源

从(我的)重点:

语法
robocopy[…][]
参数
  • 指定源目录的路径
  • 指定目标目录的路径
  • 指定要复制的一个或多个文件。如果需要,可以使用通配符(
    *
    )。如果未指定
    文件
    参数,则将
    *.
    用作默认值
  • 指定要与
    robocopy
    命令一起使用的选项
由于您一次只移动一个文件,而且显然不想维护目录结构,我想说,
robocopy
无论如何都不是您所做工作的正确工具

替换

robocopy $file.FullName $destiny /mov


代码应该可以执行您想要的操作。

robocopy$file.Directory$destiny$file/mov


解决了此问题。

使用robocopy有特殊原因吗?为什么不使用移动项目?另外,错误发生在哪一行?
Move-Item $file.FullName $destiny