Batch File para substituir string no nome e extensão do arquivo

0

Eu estou tentando escrever um arquivo de lote simples, pequeno e flexível que seja fácil de modificar para diferentes fabricantes que irão percorrer uma lista de arquivos gerber criados no Proteus e renomeá-los apropriadamente.

Este conjunto é para o Seeed Studio.

O problema que estou tendo é que somente a extensão está sendo corrigida, eu preciso de toda a string substituída.

ou seja, "Circuit - CADCAM Bottom Copper.TXT" se torna "Circuit.GBL", etc.

Atualmente, "Circuit - CADCAM Bottom Copper.TXT" se torna "Circuit - CADCAM Bottom Copper.GBL"

Obrigado pela ajuda,

Haydan

@echo off
Setlocal enabledelayedexpansion

REM Check all files are present and rename

set MISSING=0
call :CheckFile " - CADCAM Bottom Copper.TXT", ".GBL"
call :CheckFile " - CADCAM Bottom Copper", "-"
call :CheckFile " - CADCAM Bottom Silk Screen.TXT", ".GBO"
call :CheckFile " - CADCAM Bottom Solder Resist.TXT", ".GBS"
call :CheckFile " - CADCAM Drill.TXT", ".TXT"
call :CheckFile " - CADCAM Mechanical 1.TXT", ".GKO"
call :CheckFile " - CADCAM Top Copper.TXT", ".GTL"
call :CheckFile " - CADCAM Top Silk Screen.TXT", ".GTO"
call :CheckFile " - CADCAM Top Solder Resist.TXT", ".GTS"
REM if exist "Internal Plane 1.ger" call :CheckFile "Internal Plane 2.ger", ""

if %MISSING% EQU 0 (
    echo Success - all files found!
    pause
    goto :eof
) else (
    echo %MISSING% file^(s^) missing.
    pause
    goto :eof
)
REM Rename as found or flag erro

:CheckFile
if not exist *%1 (
    echo ERROR: Missing %1!
    set /a MISSING=%MISSING% + 1
) else (
    echo %1
    echo %2
    ren *%1 *%2
)
    
por Haydan Tompkins 31.08.2016 / 05:13

1 resposta

1

O próximo procedimento :CheckFile deve fazer o trabalho:

:CheckFile
set "_string=%~1"
if not exist *%1 (
    echo ERROR: Missing %1!
    set /a MISSING+=1
) else (
    for /F "delims=" %%G in ('dir /B "*%~1"') do (
        set "_fileA=%%~G"
        set "_fileB=!_fileA:%_string%=!"
        rem next 'rename' command is merely ECHOed for debugging purposes
        ECHO ren "%%~G" "!_fileB!%~2"
    )
)
goto :eof

Observação : o comando rename é meramente ECOed para fins de depuração no snippet de código acima; remova o ECHO (use ren "%%~G" "!_fileB!%~2" ) antes de ser depurado!

Saída :

==> D:\bat\SU19379.bat
ren "Circ #2 - CADCAM Bottom Copper.TXT" "Circ #2.GBL"
ren "Circuit - CADCAM Bottom Copper.TXT" "Circuit.GBL"
ren "Circuit - CADCAM Bottom Copper" "Circuit-"
ERROR: Missing " - CADCAM Bottom Silk Screen.TXT"
ERROR: Missing " - CADCAM Bottom Solder Resist.TXT"
ERROR: Missing " - CADCAM Drill.TXT"
ERROR: Missing " - CADCAM Mechanical 1.TXT"
ERROR: Missing " - CADCAM Top Copper.TXT"
ERROR: Missing " - CADCAM Top Silk Screen.TXT"
ERROR: Missing " - CADCAM Top Solder Resist.TXT"
7 file(s) missing.
Press any key to continue . . .

Recursos (leitura obrigatória, incompleta):

por 31.08.2016 / 10:29

Tags