【问题标题】:Powershell script to copy and execute用于复制和执行的 Powershell 脚本
【发布时间】:2013-04-19 06:07:25
【问题描述】:

基本上从输入提供的网络路径(例如“\SERVER\SHARE\”)我想将特定的 Excel 文件复制到我的桌面并自动运行它。问题是我的桌面上还有其他包含字母 ZZZ 的 Excel 文件。有任何想法吗?谢谢!

$title = "Copy ZZZ to Desktop"
$zzzpath = read-host Paste ZZZ path here
copy-item "$zzzpath\*ZZZ*.xlsx" "C:\Users\%username%\Desktop\"
Invoke-Item C:\Users\%username%\Desktop\*ZZZ*.xlsx

【问题讨论】:

    标签: powershell copy-item


    【解决方案1】:

    您可以将 Copy-Item 的输出通过管道传输到 Invoke-Item,强制前者将其输出传递给后者(通过 -PassThru):

    $title = "Copy ZZZ to Desktop"
    $zzzpath = Read-Host Paste ZZZ path here
    
    Copy-Item "$zzzpath\*ZZZ*.xlsx" "C:\Users\%username%\Desktop\" -PassThru |
        Invoke-Item
    

    【讨论】:

    • 谢谢先生!!!正是我需要的:) 我正在使用 -passthru 和管道进行测试,但不明白如何正确应用它。我想纠正我错过的一些东西,用户桌面的正确输入是“$Env:USERPROFILE\desktop\”(%username% 用于批处理)。
    【解决方案2】:

    我想我会做这样的事情:

    $path = read-host "Enter/paste path"
    $localdesktop = $env:userprofile, "\desktop" -join ("")
    
    $xlsdoc = Get-ChildItem -path $path | where {$_.Name -match ".xlsx$" -and $_.Name -match "ZZZ"}
    
    Copy-Item -path ($xlsdoc.FullName) -destination $localdesktop
    
    $copiedxls = Get-ChildItem -path $localdesktop | where {$_.Name -match ".xlsx$" -and $_.Length -match $xlsdoc.Length}
    
    Sleep -s 5
    
    start $copiedxls.FullName
    
    start $copiedxls
    

    编辑:我使用“.lenght”属性来比较文件大小。这就是我确定“zzz.xlsx”开始的方式。

    厄伦德。

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 2021-11-06
      • 2012-09-18
      • 2012-06-14
      相关资源
      最近更新 更多