2013-06-18 32 views
3

我是Powershell新手,正在運行我認爲是相當簡單的腳本,可以將文件從網絡複製到本地計算機。爲什麼Powershell v2 Copy-Item似乎在複製一個目錄而不是單個項目?

$htmPath = "\\ServerPath\foo\WebHelp\" 
$dstPath = "C:\LocalPath\foo\WebHelp\" 
Copy-Item $htmPath $dstPath -recurse -force 

但是,我所有的數據都在C:\LocalPath\foo\WebHelp\Webhelp\;看起來我的副本正在創建WebHelp目錄的新實例,而不是複製內容。這是正常的嗎?爲什麼會發生?我如何修改我的腳本以僅複製文件夾的內容,而不是文件夾名稱?

例如,如果我只想從\\serverpath\foo\WebHelp\files複製files NOT \WebHelp\files。通過添加或刪除結尾\和使用copy而不是copy-item的各種迭代,我都沒有成功。在複製期間消除父文件夾名稱附加到路徑的正確語法是什麼?

+0

不知道每個PowerShell ...但在* NIX命令有時結束斜線有所作爲。你嘗試過「... foo \ webhelp」嗎? – donfede

+1

我做了,實際上...相同的結果有或沒有最後的\。 – dwwilson66

回答

1

首先:開關-WhatIf可以顯示您的信息以進行有關複製的測試目的。

第二:複製目錄時不需要爲每個文件執行文件。如果您想要爲每個文件創建文件,則可以使用$htmPath\*獲取子項目。或Get-ChildItem

您可以SE您dstPath到"C:\LocalPath\foo\"

+0

我不想通過文件去文件,我只想複製目錄中的文件,而不是目錄。有沒有辦法抑制這一點?我一直沒有成功。 – dwwilson66

0

有從一個文件夾複製到另一個時,你可以用它來得到不同的結果的各種選項。

$htmPath = "\\ServerPath\foo\WebHelp\" 
$dstPath = "C:\LocalPath\foo\WebHelp\" 
Copy-Item $htmPath $dstPath -recurse -force 

你的代碼是明確選擇HTM路徑​​文件夾及其文件/子文件夾複製到目標路徑。

Copy-Item $htmPath\* $dstPath -recurse -force 

從路徑\*結束將得到改變你的,我相信這是,該HTM路徑​​的文件和子文件夾複製到目標路徑的你想要的結果。

如果您只想要文件而不是子文件夾,請刪除-recurse

瞭解有關從一個位置複製到另一個位置的更多信息here。複製項目命令信息here

相關問題