2015-10-16 66 views
-2

我需要一些批處理腳本的幫助。 我使用7zip的命令行每個RAR文件的輸出(JPG文件)發送到一個文本文件 「contents.txt」batchscript:讀取文件的內容

set PATH=%PATH%;"C:\Program Files\7-Zip" 

echo. > contents.txt 
for /R %%f in ("*.*") do (
7z l -r "%%f" | FIND /V "ing " | FIND /V "Igor Pavlov" | FIND /V "--" | FIND /V "Path" | FIND /V "Type" | FIND /V "Solid" | FIND /V "Blocks" | FIND /V "Multivolume" | FIND /V "Volumes" | FIND /V "Date" | FIND /V "---" | FIND /V "Physical Size" | FINDSTR /R /E ".jpg" >> contents.txt 
) 
PAUSE 

contents.txt的輸出是:

2001-07-17 08:39:00 ....A  326196  326164 A01.jpg 
2001-07-17 08:39:00 ....A  338338  338338 A02.jpg 
2001-07-17 08:39:00 ....A  332076  332076 A03.jpg 
2001-07-17 08:39:00 ....A  458422  458422 A04.jpg 
2001-07-17 08:39:00 ....A  376821  376821 A05.jpg 
2001-07-17 08:39:00 ....A  326196  326164 B01.jpg 
2001-07-17 08:39:00 ....A  338338  338338 B02.jpg 
2001-07-17 08:39:00 ....A  332076  332076 B03.jpg 
2001-07-17 08:39:00 ....A  458422  458422 B04.jpg 
2001-07-17 08:39:00 ....A  376821  376821 B05.jpg 
2001-07-17 08:39:00 ....A  326196  326164 C01.jpg 
2001-07-17 08:39:00 ....A  338338  338338 C02.jpg 
2001-07-17 08:39:00 ....A  332076  332076 C03.jpg 
2001-07-17 08:39:00 ....A  458422  458422 C04.jpg 
2001-07-17 08:39:00 ....A  376821  376821 C05.jpg 

A * .jpg來自aa.rar,B * .jpg文件來自bb.rar,反之亦然。我正在嘗試閱讀contents.txt文件以僅獲取第一個文件名。 我修改了上面的腳本:

for /R %%f in ("*.*") do (
7z l -r "%%f" | FIND /V "ing " | FIND /V "Igor Pavlov" | FIND /V "--" | FIND /V "Path" | FIND /V "Type" | FIND /V "Solid" | FIND /V "Blocks" | FIND /V "Multivolume" | FIND /V "Volumes" | FIND /V "Date" | FIND /V "---" | FIND /V "Physical Size" | FINDSTR /R /E ".jpg" >> contents.txt 

for /f "usebackq delims=" %%i in (contents.txt) do (
set test="%%i" 
echo %test% 
) 
) 
PAUSE 

但它不起作用。任何人都可以幫助我,我在這裏做錯了什麼? echo%test%輸出「test」,而不是文本的內容。我是批處理腳本編程的新手,所以請原諒我的愚蠢。我想以下輸出:

aa.rar A01.jpg 
bb.rar B01.jpg 
cc.rar C01.jpg 
+1

你是什麼意思的「不工作」? – aschipfl

回答

2

原始命令7z ...產生輸出

2001-07-17 08:39:00 ....A  326196  326164 A01.jpg 

有趣的是子串#6(A01.jpg)。您可以處理for /f循環中的輸出並提取令牌#6。然後給它添加一個文件名。

for /R %%A in ("*.*") do (
    rem Loops through the output of the command 7z ... 
    rem and pass tokens (5th, remainder) as (%%B, %%C) 
    for /f "tokens=5*" %%B in ('7z l -r "%%A" ^| FIND /V "ing " ^| FIND /V "Igor Pavlov" ^| FIND /V "--" ^| FIND /V "Path" ^| FIND /V "Type" ^| FIND /V "Solid" ^| FIND /V "Blocks" ^| FIND /V "Multivolume" ^| FIND /V "Volumes" ^| FIND /V "Date" ^| FIND /V "---" ^| FIND /V "Physical Size" ^| FINDSTR /R /E ".jpg"') do (
     echo %%A %%C>>contents.txt 
    )   
)