2013-03-22 47 views
0

好的,所以我做了一些研究,但在這裏遇到了一些障礙。我想要做的是(使用事件調度程序),每天運行一個批處理,只需要前一天的「ips * .csv文件(*就是日期格式)並將其複製到其他地方,以供我的測試我用「命運IPS」文件夾,我想我已經搞砸的最後一關批處理文件僅將前一天的文件複製到別處

FORFILES /P "C:\Users\J\Desktop\ips bat\source ips" /M "ips*.csv" /C "cmd /c XCOPY C:\Users  \J\Desktop\ips bat\source ips folder C:\Users\J\Desktop\ips bat\destiny ips" /D -1 

感謝提前任何幫助

強尼

回答

1
for /f "delims=" %%i in (
'dir /b /o:-d "c:\users...etc...ips*.csv" ') do (
xcopy /d "%%i" "C:\Users\J\Desktop\ips bat\destiny ips\" &goto :eof 
) 

應該這樣做。非常簡單(實際上,它可以全部在一行上)它將只複製fi的最新版本只有當目標文件不存在(或與源文件中的版本不同時)。這應該處理週末或公衆假期等任何非運營日期。

如果目的地保留了所有的歷史記錄(即目標中可能有ips*.csv文件不在源中,但反之亦然(除了新的「昨天」)),那麼只需

xcopy /d "c:\users...etc...ips*.csv" "C:\Users\J\Desktop\ips bat\destiny ips\" 

就足夠了。

的關鍵點是:「\」

  1. 目的地結束說「這是一個目錄名」
  2. 的/ d它會告訴XCOPY只複製新的或更新的文件。

(按理說這...等等...是所需的路徑名的其餘部分 - DOS不是通靈)

+0

真的很有幫助,非常感謝。 看不到/ D在幫助(例如/?) 想到我可能已經過分複雜了!我有一個問題是我不想要今天,儘管它會在那裏寫信。前幾天(一旦完成)。 – Jonny 2013-03-25 14:46:32

0

這看起來受懷疑:。

XCOPY C:\Users  \J\Desktop\ips bat\source 

是否正確T'

1

要在命令行中包含特殊字符,請在0xHH格式中使用十六進制代碼(例如,0x09是TAB字符,0x22是雙引號字符),因此「C:\ Program Files \」變爲^ 0x22C:\ PROGRAM ^文件\ ^爲0x22

FORFILES 
    /P "C:\Users\J\Desktop\ips bat\source ips" 
    /M "ips*.csv" 
    /C "cmd /c 
    XCOPY ^0x22C:\Users\J\Desktop\ips^ bat\source ips folder^0x22 
      ^0x22C:\Users\J\Desktop\ips^ bat\destiny ips^0x22" 
    /D -1 

我已經分居它放到多行以便於閱讀,但你會希望把他們放回一行

+0

你好感謝你的幫助,對不起,我似乎無法到讓它工作,可能會誤導你。我的問題不是雙引號,我的文件沒有它們。我的問題是,我似乎無法讓邏輯工作。 我似乎無法得到前一天,我似乎無法得到複製的文件。 – Jonny 2013-03-25 09:28:44

相關問題