2011-08-11 75 views
0

我目前正在開展一項工作中的自動化項目。我需要將大於6000KB的文件與文件夾中的其他文件分開的程序步驟之一。我正在尋找一個能夠將大於6000KB的文件從當前目錄移動到另一個目錄的批處理文件。我需要這個批處理文件來處理一批文件,而不僅僅是一個。有關如何在批處理文件中執行此操作的任何想法?如何根據文件大小將文件從目錄移動到另一個目錄

+0

http://stackoverflow.com/q/7363523/69820 – 2011-09-09 15:45:11

回答

2

您可以使用與文件對象VBS:File object reference

,或者你可以嘗試使用此命令提取文件大小做一個.bat文件。

for %%R in ([filepath and name]) do if %%~zR GTR [file size] 

從這個頁面:Batch file to check filesize

我會建議VBS選項更安全。


編輯:這是用於移動文件的批處理文件。請將<move file>更改爲更合適的命令。

@echo off 
for /F "usebackq tokens=3,4" %%i IN (`dir /-C`) DO CALL :MOVE_FILES %%i %%j 
exit /b 0 

:MOVE_FILES 
if %1.==. exit /b 0 
if %1 GEQ 6000000 <move file> 
+0

我對vbs幾乎一無所知。我需要能夠每天在導入的文件夾上運行此腳本。它將檢查文件大小並將大於6000 KB的所有文件移動到不同的文件夾,因爲它需要不同的自動化。 –

2
ROBOCOPY c:\From c:\To /E /MOVE /MIN:6144000 /MT:32 

替換爲 「C:\從」 和 「c:\以」 路徑你的真實路徑文件

/MIN:n:最小的文件大小 - 排除小於n字節的文件。

/MT[:n]:多線程複製,n =否。線程的使用(1-128)### 默認= 8個線程,而不是與/ IPG和/ EFSRAW 兼容針對windows7

/E:拷貝子文件夾,包括空子文件夾。

/S:複製子文件夾。

的Robocopy是一個標準Windows7的命令,用它在Windowx XP下載並安裝Microsoft Resource Kit

Details and other parameters for Robocopy are here

+0

我目前正在使用Windows XP,因此這個命令行將不會執行。我試圖下載資源工具包。它只是一本書還是它的軟件?我只看過書。從來沒有聽說過。 –

+0

http://www.microsoft.com/download/en/details.aspx?id=17657 - 對不起,固定鏈接到資源工具包下載頁面也在我的文章。這是來自微軟的一款軟件。安裝它,然後你就可以使用robocopy命令。 BTW/MT:32參數在Windows XP中無法訪問 - 使用「ROBOCOPY c:\從c:\ To/E/MOVE/MIN:6144000」 – Cheburek

2

如果你想使用VBScript,您可以使用此腳本爲基礎:

' use a default source path or get one from the command line parameters 
dim sourcepath: sourcepath = "some\default\path" 
if WScript.Arguments.Named.Exists("source") then 
    sourcepath = WScript.Arguments.Named("source") 
end if 

' use a default destination path or get one from the command line 
dim destinationpath: destinationpath = "some\default\path" 
if WScript.Arguments.Named.Exists("destination") then 
    destinationpath = WScript.Arguments.Named("destination") 
end if 

' use a default file size limit or get one from the command line 
' we accept in kbytes so we convert this to bytes 
dim sizelimit: sizelimit = 6000 * 1024 ' default 6000 kbytes 
if WScript.Arguments.Named.Exists("sizelimit") then 
    sizelimit = WScript.Arguments.Named("sizelimit") 
end if 

' use a Scripting.FileSystemObject to get the file objects of each file 
' in the source directory. The file object has a Size property, which 
' has the file size in bytes 
dim fso: set fso = CreateObject("Scripting.FileSystemObject") 
dim sourcefolder: set sourcefolder = fso.GetFolder(sourcepath) 
if not fso.FolderExists(destinationpath) then 
    ' we'll throw an error if the path is not found but you could instead 
    ' create the directory automatically 
    err.raise 1,,destinationpath & " not found" 
end if 

' loop through each file in the directory, compare size property against 
' the limit and copy as appropriate 
dim file, count: count = 0 
for each file in sourcefolder.Files 
    if file.size > sizelimit then 
     file.Move destinationpath 
     count = count + 1 
    end if 
next 

WScript.Echo("complete: " & count & " file(s) moved") 

您可以從批處理文件運行此操作(稱爲move-files.vbs):

cscript move-files.vbs /source:"C:\Documents and Settings\Username\Desktop" /destination:"F:\backup" /sizelimit:1000 
相關問題