2017-05-07 39 views
0

請幫我解決以下問題,我試圖解決。批處理腳本來比較和移動文件夾中的文件到另一個基於源文件名的一部分

我的源文件的三聯會的名稱如下:

2d09089d-ce5a-47dd-a2f5-4ee1c8c9efa5_test1_test2_fg_nel_dd tel.CSV 
2d09089d-ce5a-47dd-a2f5-4ee1c8c9efa5_test1_test2_fg_nel_dd tel.CSV.MOD 
2d09089d-ce5a-47dd-a2f5-4ee1c8c9efa5_test1_test2_fg_nel_dd tel temp.TKT 

有一個相應的文件將被命名爲:

78256_2d09089d-ce5a-47dd-a2f5-4ee1c8c9efa5_test1_test2_fg_nel_dd tel.trc 

我需要一個批處理腳本來匹配相應的文件(.trc)與相應的三重源文件,然後將三重源文件移動到另一個目錄。源文件的文件名稱長度會因包含不同的公司名稱而有所不同。所以我認爲可以這樣做的一種方式是,如果腳本忽略或截斷觸發文件名稱的前六個字符,則在接下來的36個字符上進行匹配。

以下嘗試沒有運氣。

@echo off 
setlocal enabledelayedexpansion 
for %%g in ('*.CSV *.MOD *.TKT') do (
    set var1=%%~g 
    set var2= !var1:~0,36! 
    for %%a in (*.trc) do (
     set var3=%%~a 
     set var4= !var3:~0,36! 

    if !var2! equ !var4! (COPY "%%g" "C:\dest" >nul) 
     ) 
) 

回答

0

您的問題不完整。

你說「觸發文件名」是.trc擴展名的文件。這意味着必須處理的文件是擴展名爲.trc的文件,其他文件不重要。

你說你需要「一個批處理腳本來匹配相應的文件(.trc)與相應的三重源文件」。你沒有指定,如果有或多或少文件比匹配相應.trc文件「三重」發生什麼事,所以我想這沒有重要多少文件匹配一個與.trc延伸:只是移動他們所有!

您沒有指定如何處理*.trc文件。

在問題標題中,您表示「移動文件」,但在示例代碼中使用「COPY文件」。

下一批文件過程中的*.trc文件,並複製所有匹配的文件到其他目錄:

@echo off 
setlocal 

rem Process all files with ".trc" extension 
rem take just the file name after the first underscore character 
for /F "tokens=1* delims=_" %%a in ('dir /B *.trc') do (

    rem Copy all matching files to other directory 
    copy "%%~Nb.*" "C:\dest" >nul 

) 

如果這個代碼不解決您的問題,那麼你一定是更加清晰時描述你的問題的細節...

0

以下是我完成的腳本,它的工作原理。

for /f "tokens=*" %%1 in ('dir /a-d /b *.*') do (
    set filename=%%1&set match1=!filename:~0,36! 
     echo !match1! 
     for /f "tokens=*" %%A in ('dir /a-d /b *.ctrl') do (
      set filename2=%%A&set match2=!filename2:~0,36! 
         echo !match2!  
     if "!match2!" == "!match1!" if not %%~x1==.ctrl MOVE "%%1" "C:\dest" >nul 
    )   
) 
相關問題