我是一个Powershell新手,试图让一个简单的脚本运行.
我有一个文件列表,我想从一些src_dir复制到dst_dir.我写了一个简单的脚本(这显然是错误的,因为它在执行时没有做任何事情).
请有人帮忙检查一下我做错了什么?
# source and destionation directory
$src_dir = "C:\Users\Pac\Desktop\C4new"
$dst_dir = "C:\Users\Pac\Desktop\csci578-hw3\Prism\C4new"
# list of files from source directory that I want to copy to destination folder
# unconditionally
$file_list = "C4newArchitecture.java", "CustomerData.java"
# Copy each file unconditionally (regardless of whether or not the file is there
for($i=0; $i -le $file_list.Length - 1; $i++)
{
Copy-Item -path $src_dir+$file_list[$i] -dest $dst_dir -force
}
Run Code Online (Sandbox Code Playgroud)
Kei*_*ill 11
假设文件直接是$ src_dir,你可以更简单地做到这一点,即副本可以是单行:
$file_list | Copy-Item -Path {Join-Path $src_dir $_} -Dest $dst_dir -ea 0 -Whatif
Run Code Online (Sandbox Code Playgroud)
-ea是-ErrorAction参数的别名,0值对应于SilentlyContinue.这会导致Copy-Item忽略错误,就像其中一个源文件不存在一样.但是,如果遇到问题,请暂时删除此参数,以便可以看到错误消息.
当以交互方式键入这些内容时,我倾向于使用这样的快捷方式,但在脚本中最好将其拼写为可读性.另请注意,-Path参数可以采用scriptblock,即花括号中的脚本.从技术上讲,Copy-Item cmdlet永远不会看到scriptblock,只看到它的执行结果.这适用于任何采用管道输入的参数.删除-WhatIf以使命令实际执行.
哦..这实际上非常简单:
# source and destionation directory
$src_dir = "C:\Users\Pac\Desktop\C4new\"
$dst_dir = "C:\Users\Pac\Desktop\csci578-hw3\Prism\C4new"
# list of files from source directory that I want to copy to destination folder
# unconditionally
$file_list = "C4newArchitecture.java",
"CustomerData.java",
"QuickLocalTransState.java",
"QuickLocalTransState_AbstractImplementation.java",
"SaveSessionOK.java",
"SessionID.java",
"UserInterface.java",
"UserInterface_AbstractImplementation.java"
# Copy each file unconditionally (regardless of whether or not the file is there
foreach ($file in $file_list)
{
Copy-Item $src_dir$file $dst_dir
}
Run Code Online (Sandbox Code Playgroud)
作为程序员,我喜欢foreach!
| 归档时间: |
|
| 查看次数: |
15649 次 |
| 最近记录: |