來源:本機硬碟某個目錄
目的:外接式硬碟、隨身碟、抽取式讀卡機等,多台,最多6台
需求:來源==>目的,檔案同步,方式為覆蓋(mirror)+跳過既有同名檔案
請問該如何以批次檔完成這操作?
主要是因為磁碟代號會跳,我希望插入外接設備之後,只要執行一個批次檔,就同時同步過去,最後一個同步完成時,顯示訊息或是播放一個提示音。
感謝大家幫忙。
tasklist |find "cmd.exe" if %errorlevel% EQU 1 for /l %%i in (1,1,10000) do echo ^G & timeout 1
我提供一個可以辨識不同設備的方法
假設您有2個設備
分別是5gb 10gb
您可以在5gb隨身碟的根目錄下放一個5gb.txt空檔案
然後
您可以在10gb隨身碟的根目錄下放一個10gb.txt空檔案
然後以此類推
再來用以下 batch 語法
FOR %%d IN (D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) DO IF EXIST %%d:\5gb.txt set 5GB=%%d:
FOR %%d IN (D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) DO IF EXIST %%d:\10gb.txt set 10GB=%%d:
....以此累推
上面語法是說
從磁碟機 D-到-Z
如果說在 J 磁碟機根目錄找到一個 5gb.txt 的檔案 就把5gb這個變數設定為 j:
如果說在 H 磁碟機根目錄找到一個 10gb.txt 的檔案 就把10gb這個變數設定為 H:
然後就可以試用這些變數了
例如
copy D:\back.txt %5GB%\back\
copy E:\back.txt %10GB%\back\
如果還不清楚再舉一個例子
我有2個隨身硬碟
一個是要備份mis的檔案
另一個要備份acc的檔案
我在要備份mis的檔案的隨身硬碟中放一個mis.txt的檔案以供識別(空檔即可不需有內容)
我在要備份acc的檔案的隨身硬碟中放一個acc.txt的檔案以供識別(空檔即可不需有內容)
FOR %%d IN (D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) DO IF EXIST %%d:\mis.txt set mis=%%d:
FOR %%d IN (D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) DO IF EXIST %%d:\acc.txt set acc=%%d:
我要把D:\MIS\BACKUP\ 裡所有檔案copy到 mis這個隨身碟
我要把D:\ACC\BACKUP\ 裡所有檔案copy到 acc這個隨身碟
copy D:\MIS\BACKUP\*.* %MIS%\ /Y
copy D:\ACC\BACKUP\*.* %ACC%\ /Y
excludeDrive = "A:C:"
sourceDrive = "C:"
sourceFD = "AAA"
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Set fs = CreateObject("Scripting.filesystemobject")
If instr(1,excludeDrive, UCase(objDisk.Name))<0 Then
fs.CopyFolder sourceDrive & "\" & sourceFD,objDisk.Name &"\" & sourceFD, false
end if
Next
WScript.Echo "複製完成!!!"
=====