【问题标题】:Powershell script to search folders using .csv files without Path使用没有路径的 .csv 文件搜索文件夹的 Powershell 脚本
【发布时间】:2015-08-06 17:25:50
【问题描述】:

我是 powershell 脚本的新手,因此需要脚本方面的帮助,我正在寻找的脚本应该根据 .csv 文件中的条目搜索文件夹,请注意它应该搜索文件夹在不知道路径的情况下将驱动器移动到目的地。

我做了一些研究并创建了下面的脚本,该脚本从.txt 文件中获取数据并将数据移动到目标位置,但是如果我只是在源文件夹的位置写入C:\,它就不起作用。

请求你帮助我:)

Get-Content C:\abc.txt | 
   Foreach-Object { 
                    move-item -path "C:\0123\$_" -destination "C:\To Archive\$_"
                  }  

【问题讨论】:

  • abc.txt 的内容是什么样的?带有要移动的项目的单列?我假设带有文本文件的 Get-Content 将返回一个字符串。
  • 你能给出一个示例输入(源文件系统)和一个示例输出(目标文件系统)吗?有点不清楚你在问什么。
  • 大家好,首先我要感谢您回答我的问题,我会让您知道我在寻找什么。我有一个 .csv 文件,其中有一个名为 project 的列,其中我有项目。例如:Projects 1234AA5678 0987II6543 现在我想设计一个脚本,它应该读取这个 .CSV 文件并在我计算机上的所有驱动器上搜索这些文件夹并将其移动到可能是 C:\test 的目的地

标签: powershell


【解决方案1】:

根据您提供的信息,我将执行以下操作:

$File = Import-Csv C:\share\test\files.txt 

Foreach($fileName in $File.FileName)
{
    Move-Item -path "C:\share\test\OldLocation\$fileName" -Destination "C:\share\test\NewLocation\$fileName"
}

我使用一个 .csv 文件执行此操作,该文件有一个标题为 FileName 的列。与您的代码的显着差异包括使用 Import-Csv cmdlet 并在 foreach 循环中指定 .csv 标头标题。


如果您想使用单个命令执行此操作:

Import-Csv C:\share\test\files.txt | ForEach-Object {
    Move-Item -path "C:\share\test\OldLocation\$($_.[csvHeader])" -Destination "C:\share\test\NewLocation\$($_.[csvHeader])"
}

其中 csvHeader 是 .csv 文件中列的标题。


我的 .csv 文件如下所示:

FileName
file1.txt
file2.txt
file3.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 2015-10-03
    • 2011-12-07
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    相关资源
    最近更新 更多