2011-11-16 67 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假的)?