2012-10-09 137 views
0

誰能告訴我如何創建一個批處理文件來執行以下操作:Windows批處理腳本複製大文件,並通過模式

  1. 在以下日期格式創建一個文件夾MMDDYYYY
  2. 搜尋當前目錄並將其複製到步驟1中創建的文件夾中。
  3. 還在當前目錄中搜索與找到的最大文件相匹配的第二個文件,並將其複製到步驟1中創建的目錄中。
For example: 
file1test.txt (3kb) 
file2test.txt (10 kb) 
file1test.log (2kb) 
file2test.log (2kb) 

file2test.txt被選擇和複製到文件夾,因爲它是最大的文件和file2test.log被選擇和複製到相同的文件夾,以及因爲它的模式匹配最大的文件。

+1

*(我的編號是無關你的。)* 1,特別是有你有什麼在這一點上的困難? 2.你的帖子實際上包含幾個問題。如果你把它分成幾個問題,你可能會得到更好的質量答案。 (後者對整個社區也是有利的。)3.通過* pattern * *表示*名稱相同的文件(以及任何擴展名)*是否正確?如果有一個具有所謂的「雙擴展」的文件,比如'file2test.txt.log',會怎麼樣?它需要符合你的模式嗎? –

回答

1

正如Andriy已經指出的那樣,您的帖子中有三個問題,第一個和第二個已經在SO中回答。

要解決您的最新問題,您需要在文件列表中迭代FOR,並比較您想匹配的文件名部分。

爲了幫助您,並幫助您入門,請參閱以下示例代碼。我從你的例子中假設你只想取名字部分,沒有擴展名,我假設這個例子中的擴展名是.log和.txt。您將必須完成文件夾部分,更改並擴展它以適應您的需求。而且,作爲額外的獎勵,這個樣品是understendable,我必須得解決您的第二個問題,抱歉:)

@echo off 
setlocal enabledelayedexpansion enableextensions 
set destfolder=Folder01012001 
set largest= 
set largestname= 
set /a largestsize=0 
for %%a in (*.txt) do (
    if %%~za gtr !largestsize! (
    set largest=%%a 
    set largestname=%%~na 
    set /a largestsize=%%~za 
) 
) 
set match= 
for %%a in (*.log) do (
    if %%~na==!largestname! (
    set match=%%a 
) 
) 
echo copy "!largest!" %destfolder% 
echo copy "!match!" %destfolder% 
endlocal