2011-11-16 130 views
1

我想知道如何創建一個PowerShell腳本來從另一個位置複製文件。Powershell在複製之前檢查文件的複製腳本

腳本需要在開始複製之前檢查文件名。

文件名採用當前日期格式(swddmmyyy),例如sw16/11/2011。這個文件名稱每天都在變化,所以明天將會是sw17112011。

所以當腳本運行時,它會在複製文件夾中的內容之前檢查文件名是否與當前日期匹配。該文件與需要複製的內容位於相同的文件夾中。

$date = (get-date).adddays(0).ToString("ddMMyyyy") 
$filter = "sw_$date" 
$file = "c:\scripts\$filter" 
$check = test-path $file 
$script = $check -eq $true 
If ($script) {Get-ChildItem C:\scripts*.csv | Copy-Item -destination c:\test} 

在此先感謝

+1

你到目前爲止嘗試過什麼?向你展示你的努力,有人肯定會幫助你。 –

+0

基督徒是對的。給社區一些事情。你使用哪些cmdlet? – Tom

+0

第一次缺乏信息的道歉。我從那以後取得了進展。我確信有可能是一種更簡單的方法,但我已經找到了這種方法 $ date =(get-date).adddays(0).ToString(「ddMMyyyy」) $ filter =「sw_ $ date」 $文件= 「C:\腳本\ $過濾器」 $檢查=測試路徑$文件 $腳本= $支票當量$真實 如果($腳本){獲取-ChildItem C:\腳本\ *。csv |複製項目目的地c:\測試} 但是,我想了解是否有一種方法,我可以檢查兩個文件夾,然後只複製新文件? 謝謝 –

回答

0

更好地使用ROBOCOPY這樣的目的:http://technet.microsoft.com/en-us/library/cc733145(WS.10).aspx

你試圖腳本編輯點評:

(get-date).adddays(0).ToString("ddMMyyyy") - 你爲什麼要加0天呢?只需使用

(get-date).tostring("ddMMyyyy")

您可以刪除$支票,$腳本等,並剛做:

If (test-path $file) {Get-ChildItem C:\scripts*.csv | Copy-Item -destination c:\test} 
+0

因爲我想在複製之前做一些檢查(上面的腳本),robocopy會這樣做嗎?或者我需要同時使用PowerShell和Robocopy? –

0

呦回答我的問題,我已經使用了以下解決方案。

$date = (get-date).ToString("ddMMyyyy") 

$filter = "sw_$date" 

$file = "c:\scripts\$filter" 

If (test-path $file) 

{robocopy c:\scripts c:\test *.csv /xo} 

沒有人有任何建議,如何循環這個所以如果重試(測試路徑$文件EQ假的)?