Board logo

標題: XCOPY請教 [打印本頁]

作者: speed    時間: 2018-2-7 09:41     標題: XCOPY請教

我想整一個xcopy指令for backup每日的folder

A電腦每日都會有1個FOLDER 叫 2018-02-07(即係每日的日期), 想COPY去B電腦的2018-02-07
個FOLDER係變數,XCOPY可以點寫, 知道有個FUNCTION 係 \%_today% , 但唔知點運用法,個FOLDER格式一定係年-月-日咁排,無法更改
作者: emailaddress    時間: 2018-2-7 10:23

如果date 出 07/02/2018 星期三
試下
%date:~6,4%-%date:~3,2%-%date:~0,2%
作者: speed    時間: 2018-2-7 11:00

回覆 2# emailaddress


好似唔得既
我來源的資料夾名是  [2018-02-07]
作者: speed    時間: 2018-2-7 11:02

回覆 2# emailaddress


    好似唔得
我個來源資料夾是 [2018-02-07]
作者: 燒浩    時間: 2018-2-7 14:33

本帖最後由 燒浩 於 2018-2-13 10:10 編輯

用純 cmd 攞 datetime 唔會太準。可透過其他中介攞 datetime (如︰ VBScript)。雖然麻煩少少,唔會因為唔同 locale setting 而錯,準確好多。之前寫落咗個 VBScript,睇睇啱唔啱用。
  1. '#-----------------------------------------------------------------------------
  2. '#- datetime.vbs
  3. '#- Modified Date: 09-Jun-2017
  4. '#- Example:
  5. '#-     for /f "tokens=1-6" %%i in ('cscript //nologo "datetime.vbs"') do (
  6. '#-         set "year=%%~i"
  7. '#-         set "mon=%%~j"
  8. '#-         set "day=%%~k"
  9. '#-         set "hour=%%~l"
  10. '#-         set "min=%%~m"
  11. '#-         set "sec=%%~n"
  12. '#-     )
  13. '#-----------------------------------------------------------------------------


  14. Option Explicit

  15. Dim nowDateTime, nowYear, nowMonth, nowDay, nowHour, nowMinute, nowSecond
  16. Dim resDateTime
  17. Dim i, tmpArray

  18. Function twoDigits(inValue)
  19.     If inValue < 10 Then
  20.         inValue = "0" & inValue
  21.     End If
  22.     twoDigits = inValue
  23. End Function

  24. nowDateTime = Now()

  25. nowYear = DatePart("yyyy", nowDateTime)
  26. nowMonth = DatePart("m", nowDateTime)
  27. nowDay = DatePart("d", nowDateTime)
  28. nowHour = DatePart("h", nowDateTime)
  29. nowMinute = DatePart("n", nowDateTime)
  30. nowSecond = DatePart("s", nowDateTime)

  31. tmpArray = Array(nowYear, nowMonth, nowDay, nowHour, nowMinute, nowSecond)

  32. For i = 0 to UBound(tmpArray)
  33.     If i > 0 Then
  34.         resDateTime = resDateTime & "_" & twoDigits(tmpArray(i))
  35.     Else
  36.         resDateTime = twoDigits(tmpArray(i))
  37.     End If
  38. Next

  39. WScript.Echo resDateTime
複製代碼
謝 bongbong3481 修正。
作者: jj2a3    時間: 2018-2-7 16:21

要先知你個%date%係咩format先有得攪. 如畫面個format, 個batch file就.
  1. set today=[%date:~10,4%-%date:~4,2%-%date:~7,2%]
  2. xcopy /e /i c:\%today% \\server2\c$\%today%
複製代碼
[attach]2040715[/attach]
作者: ckmakit    時間: 2018-2-7 16:22

我平時用開...夾埋落windows scheduler 行...
超陽春的說
@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
echo %mydate%
作者: speed    時間: 2018-2-7 16:31

回覆 6# jj2a3


得左喇, 原來就咁%DATE%, thx
作者: speed    時間: 2018-2-8 10:54

好奇怪,我用COPY指令COPY唔到我WIN7 桌面的FILE, 路徑無錯架
C:\Users\XXXXX\Desktop
作者: bongbong3481    時間: 2018-2-8 12:17

回覆 5# 燒浩

同意,dos 個日期格式,吾易正確解讀到
作者: 燒浩    時間: 2018-2-8 12:19

本帖最後由 燒浩 於 2018-2-8 12:20 編輯

Copy folder 要用 xcopy(通常加 /e /h /k /i),copy 只可用於單一 file(如 copy 單一file出現路徑問題,留意 path 有 space必需用「"」引住 path)。
作者: kei11182    時間: 2018-2-9 08:09

點解唔用Powershell? 會唔會簡單d?
作者: bongbong3481    時間: 2018-2-10 20:18

回覆 5# 燒浩

minute 好似寫 "n"


nowMonth = DatePart("m", nowDateTime)
nowMinute = DatePart("m", nowDateTime)
作者: 燒浩    時間: 2018-2-13 10:09

本帖最後由 燒浩 於 2018-2-13 10:18 編輯
回覆  燒浩

minute 好似寫 "n"


nowMonth = DatePart("m", nowDateTime)
nowMinute = DatePart("m", now ...
bongbong3481 發表於 2018-2-10 08:18 PM


謝修正。已改回。

點解唔用Powershell? 會唔會簡單d?
kei11182 發表於 2018-2-9 08:09 AM


其實各有各好。不過有時用 PowerShell 感覺最大問題係版本,由其係 2.0 同新版差異(由於之前仲有大量 03 Server),好多時寫啲 script 未必兩邊兼容,固多數簡單嘢會用 cmd 撘 vbscript,比較快解決問題。
作者: bongbong3481    時間: 2018-2-13 12:18

回覆 14# 燒浩

我都覺dos command + vbs 比較易用,檔案處理好方便





歡迎光臨 電腦領域 HKEPC Hardware (https://h2.hkepc.com/forum/) Powered by Discuz! 7.2