windows - Batch omdøbe med resultatet af anden batch

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at oprette en batchfil, som scanner dokumenter for en stregkode og omdøber filen til stregkoden.


Jeg bruger to batchfiles til dette. En af batchfilerne (test.bat) udfører exe'en, der scanner for stregkoden:


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


I den anden batchfil skal jeg scanne alle filer i mappen med en * .tif-udvidelse, scanne for stregkoden og omdøbe den til barcodenummeret. Den anden batch (rename.bat) ser sådan ud:


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


Mit hovedspørgsmål er, hvordan kan jeg inkorporere en omdøbe kommando, der omdøber filerne til resultatet af test.bat.


Kort sagt er det processen:
1. Der er en fil, der hedder test.tif
2. filen scannes for en stregkode (dvs. 123456789)
3. test.tif omdøbes til 123456789.tif


Jeg undrer mig over, hvordan jeg kan fange udfaldet af test.bat i en variabel, så jeg kan kalde det, når jeg bruger omdøbningskommandoen?


Tak!

Bedste reference


Måden at fange output fra test.bat er den samme som du brugte til at fange output fra dir kommando: via en for /F kommando.


Den enkleste løsning er at fjerne filen test.bat og indsætte zbarimg.exe -programmet i samme Batch-fil:


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


Men hvis du vil beholde test.bat filen, gør du bare dette:


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

Andre referencer 1


Den akavede måde cmd skal få resultatet til en variabel er at bruge en FOR-loop.


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"
)


Når den producerer den korrekte REN-kommando, skal du fjerne echo.


Dette gør det heller ikke muligt at flere .tiff-filer har samme stregkode resultat.