2017-05-04 3 views
0

바코드에 대한 문서를 스캔하고 파일 이름을 바코드로 바꾸는 배치 파일을 만들려고합니다.다른 배치의 결과와 함께 일괄 이름 바꾸기

이 경우 두 개의 배치 파일을 사용합니다. 스캔, 두 번째 배치 파일에서

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

, 나는 그것이 *이 .tif 확장자를 가진 디렉토리에있는 모든 파일을 검사 할 다음 batchfiles (TEST.BAT)의 하나는 바코드를 스캔 EXE 파일을 실행 바코드 이름을 barcodenumber로 바꿉니다. 두 번째 배치 (rename.bat)은 다음과 같습니다

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

내 주요 질문은 내가 TEST.BAT의 결과에 파일 이름을 변경 이름 변경 명령을 통합 할 수있는 방법이다. 1. 파일 (예 : 123456789) 3. 또는 test.tif이 123456789.tif로 이름이 변경되는 바코드 스캔되고 2 또는 test.tif라는 파일이 있습니다 : 짧은에서

, 이것은 사전 처리입니다

변수에서 test.bat의 결과를 캡처하는 방법이 궁금해서 이름 바꾸기 명령을 사용할 때 호출 할 수 있습니까?

감사합니다.

답변

1

test.bat의 출력을 캡처하는 방법은 dir 명령의 출력을 캡처하는 방법과 동일합니다 (for /F 명령 사용).

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

: 그냥 이렇게, 당신은 test.bat 파일을 유지하려는 경우,

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 파일을 제거하고 같은 배치 파일에 zbarimg.exe 프로그램을 삽입입니다 감사! 아마도 동일한 바코드가 _1, _2 등으로 이름이 바뀌는 구조를 만들게 될 것입니다. – HansR83

관련 문제