我在Powershell中使用Copy-item命令时看到在目标文件夹中与文件一起创建的空源目录

桑托什
$InputFile = "C:\InfoWorkflows.txt"

$fileText = Get-Content $InputFile

foreach ($LineText in $fileText){
    echo "LineText is $LineText"
    $containsWord = $LineText | %{$_ -match "test_control.xml"}
    if($containsWord -eq $false)
    {
        $SplitText = $LineText -split' '
        $Change = $SplitText[0]
        $fileName = $SplitText[1]
        echo "fileName is $fileName"
        echo "Copy-Item -Path C:\mb\INFO\$fileName -Destination C:\BackOrder\INFOT"
    }
}

在目标文件夹C:\ BackOrder \ INFOT中,在执行PS时,我能够看到inputFile中提到的PS“ test_Control.xml”以外的文件,并且还从Source Path创建了空白文件夹(INFO)。我从未提供过任何指示。有人可以调查并帮助我吗?

根据

您拥有的代码不会检查输出文件夹'C:\ BackOrder \ INFOT'是否存在,也不会检查'C:\ mb \ INFO \ $ fileName'是否存在。除此之外,我不明白您为什么要对Copy-Itemcmdlet进行细线处理

另一件事是,您-match对包含句点(.)字符的文件名使用regex运算符,而不对其进行转义。在Regex中,点有特殊含义,即“任何字符”。

下面的代码使用String对象方法.Contains过滤Where-Object{}子句中不包含“ test_control.xml”的字符串在代码注释中,[Regex]::Escape()如果您想继续使用,则可以阅读使用方法-match

$InputFile = 'C:\InfoWorkflows.txt'
$OutputDir = 'C:\BackOrder\INFOT'

# test if output folder exists and if not create it first
if (!(Test-Path -Path $OutputDir -PathType Container)) {
    Write-Host "Creating folder $OutputDir"
    $null = New-Item -Path $OutputDir -ItemType Directory
}
# read the input file as string array and filter the lines that do not contain "test_control.xml")
# if you want to do that with the regex -match operator, you should escape it first:
#   [Regex]::Escape("test_control.xml")  --> "test_control\.xml"
$fileText  = Get-Content $InputFile | Where-Object { !$_.Contains("test_control.xml") } | ForEach-Object {
    $fileName = ($_ -split ' ')[1]
    Write-Host "FileName is $fileName"
    # combine the path and file name for the file to copy
    $sourceFile = Join-Path -Path 'C:\mb\INFO' -ChildPath $fileName
    if (Test-Path -Path $sourceFile -PathType Leaf) {
        Copy-Item -Path $sourceFile -Destination $OutputDir
    }
    else {
        Write-Warning "File '$sourceFile' could not be found."
    }
}

希望能有所帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Copy-Item 不包括 PowerShell 中源目录的子文件夹文件

使用copy-item命令时Powershell不排除特定的子文件夹

与Java一起使用gradle:与Java一起使用gradle时何时创建.m2文件夹

如何在PowerShell中使用Copy-Item覆盖文件

将完整路径传递给Docker映像时,“没有此类文件或目录”,但与相同文件夹的相对路径一起使用

不在默认的“ / test”文件夹中时,将Mocha Test Explorer与VScode一起使用

将功能文件夹与Prism一起使用

如何在我的批处理脚本中列出要与wzzip(winzip)命令行一起使用的根文件夹中的特定日期文件夹?

将COPY与多个源文件一起使用时,目标位置必须是目录,并以/结尾

如何使用 BASH 中的一个命令同时移动文件和创建目录并粘贴到该新文件夹中

在powershell命令中使用单独的文件夹

Powershell:将父文件夹中的所有子目录和内容复制到另一个文件夹目标

如何使用dir和一起复制来搜索目录并复制到文件夹?

在Powershell中使用先前的日期创建文件夹

在NLog目标中使用$ {basedir}创建一个具有该名称的文件夹

使用`powershell`命令行创建多个文件夹时出错

是否可以使用 Copy-Item 从源目录中仅复制几个文件?

如何使用Dockerfile中的单个COPY层在不同的源目录和目标目录中复制多个文件

如何设置Windows 10共享文件夹以在同一LAN中与Kubuntu一起使用

将原子与氢一起使用。Atom的工作目录是当前文件位置之后的一个文件夹。如何将其更改为当前文件夹?

我需要一个Windows CMD来遍历目录中的文件夹并在每个文件夹上执行一条命令

使用Powershell删除SSISDB目录中的SSIS文件夹

使用 new-item 创建文件夹偶尔会在 Powershell 中引发错误

对于制作的每个文件,我想创建一个包含多个文件夹的目录

如何配置Nginx服务器以与子文件夹中的React应用一起使用?

Asp.Net Core 2.2身份页面无法与“视图/共享”文件夹中的“布局”一起使用

使用.bat文件或dos命令提取目录(包括子文件夹)中的所有Zip

需要在Powershell中创建动态文件夹并将其用作copy-item中的变量

使用rsync时,如何避免在目标位置创建源的根文件夹?