2017-05-04 10 views
0

バッチファイルを作成しようとしています。バッチファイルを作成しています。バッチファイルは、バーコードをスキャンし、ファイルの名前をバーコードに変更します。他のバッチの結果とバッチリネーム

私はこれに2つのバッチファイルを使用します。スキャン、第二のバッチファイルで

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

、私はそれは* .tifファイル拡張子を持つディレクトリ内のすべてのファイルをスキャンする:バッチファイル(TEST.BAT)の一つは、バーコードをスキャンexeファイルを実行しますバーコードを作成し、barcodenumberに名前を変更します。第二のバッチ(rename.batとは)次のようになります。

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

私の主な質問は、私はTEST.BATの結果にファイルの名前を変更renameコマンドを組み込むことができる方法、です。要するに

は、このプロセスへある: 2.ファイルtest.tifと呼ばれるファイルは、バーコードのスキャンされて存在する 1(すなわち123456789) 3 test.tifは123456789.tifに変更され

私は変数の中でtest.batの結果をどのようにキャプチャすることができるのだろうと思っていますので、私はrenameコマンドを使用すると呼び出すことができますか?

ありがとうございます!

答えて

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