【问题标题】:Read text file and run a copy command for each line in the text file读取文本文件并为文本文件中的每一行运行复制命令
【发布时间】:2014-05-11 10:38:54
【问题描述】:

我正在尝试编写一个 Powershell 脚本,该脚本将在我的桌面上读取一个填充了用户名的文本文件,然后转到我们网络共享上的指定文件夹,比如说 u:\data 并从中复制内容对于文本文件中的每个用户,文件夹到另一个网络共享让我们说 y:\information

这要怎么写?

我已经尝试了几件事来读取文本文件,然后尝试了几个命令来复制和粘贴,但它们都失败了。

更新:

以下是我目前所做的:

$user = Get-Content "test.txt"

$path = "\\abnas2\abusers\users"

$path2 = "\\abnas2\abdept\dept\testcopy"

$Copy = Copy-Item -path $path\$user\ * -Destination $path2\$user

我在 test.txt 文件中有一个名为 user1 的用户名,它提取了该名称,并完美复制。

现在,如果我在 test.txt 文件中添加多个名称并运行上述内容,则会出错。它返回的错误使它看起来像列表中的 3 个用户名是一个用户名。

我需要做的是为列表中的每个名称运行命令。我在想我可以使用foreach 命令但不知道该怎么做。

更新 - 04\09\2014: 我尝试了以下方法并收到错误消息: $user = 获取内容“test.txt” $path = "\abnas2\abusers\users" $path2 = "\abnas2\abdept\dept\testcopy" $Copy = Copy-Item -path $path\$user* -Destination $path2\$user foreach($user 中的 $username) { 复制项目 -path $path\$username* -Destination $path2\$username\ }

当我运行它时,我收到以下错误: Copy-Item : 指定路径 \\abnas2\abusers\users\user1 user2 user3 的对象不存在。

这些是我的 test.txt 文件中的名称,有没有办法让它一次读取一行并执行复制,完成后转到列表中的下一个名称并执行相同操作?我不知道如何让它做到这一点。

【问题讨论】:

  • 向我们展示您的尝试。
  • 我对 powershell 很陌生,只测试了一些东西,例如 get content 命令和 copy from and to 命令。我想知道你是否可以给我一个它可能是什么样子的样本
  • “我已经尝试了几件事来读取文本文件,然后尝试了几个命令来复制和粘贴,但它们都失败了。” - 选择一项任务。从读取文件开始。如果您在编码时遇到特定问题,请发布有关它的问题以及您尝试过的内容和结果。把它排序,然后继续下一点。
  • 您在使用Get-ContentCopy-Item 时可能走在正确的轨道上。如果您可以解释您尝试过的内容(通过显示和解释脚本)以及您在这些尝试中观察到的错误(例如异常消息、其他不是预期结果的结果),那么为您提供帮助会容易得多.
  • "这个怎么写?" - 应该写成 for /f %%f in (usernames.txt) do (RoboCopy "U:\data\%%f" Y:\Information /E /COPYALL /DCOPY:T,或者你可以在 PowerShell 中重新发明轮子,我猜。

标签: powershell


【解决方案1】:

您可以使用foreach

在这种情况下:

foreach($username in $user) {
   Copy-Item -path $path\$username\* -Destination $path2\$username\
}

会将$path$user中每个命名文件夹的内容复制到$path2中的对应文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 2014-05-23
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多