Batchdatei zum Ersetzen von Zeichenfolgen im Dateinamen und in der Erweiterung

Batchdatei zum Ersetzen von Zeichenfolgen im Dateinamen und in der Erweiterung

Ich versuche, eine einfache, kleine und flexible Batchdatei zu schreiben, die für verschiedene Hersteller leicht geändert werden kann und die eine Liste der in Proteus erstellten Gerber-Dateien durchläuft und sie entsprechend umbenennt.

Dieses Set ist für Seeed Studio.

Mein Problem besteht darin, dass nur die Erweiterung korrigiert wird. Ich muss die gesamte Zeichenfolge ersetzen.

zB wird aus "Circuit - CADCAM Bottom Copper.TXT" "Circuit.GBL" usw.

Derzeit wird aus „Circuit - CADCAM Bottom Copper.TXT“ „Circuit - CADCAM Bottom Copper.GBL“.

Danke für die Hilfe,

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
)

Antwort1

Das folgende :CheckFileVerfahren sollte funktionieren:

: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

Notiz: renameDer Befehl wird im obigen Codeausschnitt lediglich zu Debugzwecken als ECHO ausgegeben; entfernen Sie das führende ECHO(verwenden Sie ren "%%~G" "!_fileB!%~2") erst nach dem Debuggen!

Ausgabe:

==> D:\bat\SU\1119379.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 . . .

Ressourcen(Pflichtlektüre, unvollständig):

verwandte Informationen