2017-05-04 64 views
0

我想創建一個批處理文件,它掃描文件的條形碼,並將文件重命名爲條形碼。批量重命名與其他批次的結果

我爲此使用了兩個批處理文件。其中一個批處理文件中(test.bat的)的執行,用於掃描條形碼的exe:

@echo off 
zbarimg.exe --raw -D -q %1 

在第二個批處理文件,我想它掃描與*擴展名爲.tif的目錄中的所有文件,掃描的條形碼,並將其重命名爲barcodenumber。第二批(rename.bat)看起來是這樣的:

for /f "tokens=*" %%a in ('dir /b *.tif') do (test.bat %%a) 

我的主要問題是,我怎麼可以將重命名命令,這些文件重命名爲test.bat的結果。

總之,這是PROCES: 1.有一個叫做test.tif 2.文件的文件被掃描的條形碼(即123456789) 3. test.tif被重命名爲123456789.tif

我在想如何捕獲變量中test.bat的結果,所以我可以調用,當我使用重命名命令?

謝謝!

回答

1

test.bat捕獲輸出的方式與用於捕獲dir命令的輸出的方式相同:通過for /F命令。

最簡單的辦法是消除test.bat文件,並在同一個批處理文件中插入zbarimg.exe程序:

for /f "tokens=*" %%a in ('dir /b *.tif') do (
    for /F %%b in ('zbarimg.exe --raw -D -q %%a') do (
     ren "%%a" "%%b.tif" 
    ) 
) 

但是,如果你想保持test.bat文件,只是這樣做:

for /f "tokens=*" %%a in ('dir /b *.tif') do (
    for /F %%b in ('test.bat %%a') do (
     ren "%%a" "%%b.tif" 
    ) 
) 
+0

謝謝,這正是我一直在尋找的! – HansR83

0

cmd的尷尬方式是將結果存入變量,即使用FOR循環。

SETLOCAL ENABLEDELAYEDEXPANSION 

SET "BCNAME=" 

for /f "tokens=*" %%a in ('dir /b *.bat') do (
    FOR /F "usebackq tokens=*" %%b IN (`CALL wc "bc.bat"`) DO (SET "BCNAME=%%~b") 
    echo REN "%%~a" "!BCNAME!.tif" 
) 

當它產生正確的REN命令時,請刪除echo

此外,這不會讓多個.tiff文件具有相同的條形碼結果。

+0

謝謝!我可能會創建一個相同的條形碼重新命名爲_1,_2等的結構。 – HansR83