2017-05-04 27 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