
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 :CheckFile
Verfahren 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: rename
Der 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):
- (Befehlsreferenz)Ein AZ-Index der Windows CMD-Befehlszeile
- (weitere Besonderheiten)Befehlszeilensyntax der Windows CMD-Shell
- (
%~G
,%~1
usw. Spezialseite)Befehlszeilenargumente (Parameter) - (
set "_fileB=!_fileA:%_string%=!"
usw.)Variable bearbeiten/ersetzen