
Я пытаюсь написать простой, небольшой и гибкий пакетный файл, который можно будет легко изменять для разных производителей. Он будет просматривать список файлов Gerber, созданных в Proteus, и переименовывать их соответствующим образом.
Этот набор предназначен для Seeed Studio.
Проблема в том, что исправляется только расширение, мне нужно заменить всю строку.
т.е. «Circuit - CADCAM Bottom Copper.TXT» становится «Circuit.GBL» и т.д.
В настоящее время «Circuit - CADCAM Bottom Copper.TXT» становится «Circuit - CADCAM Bottom Copper.GBL»
Спасибо за помощь,
Хайдан
@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
)
решение1
Следующая :CheckFile
процедура должна выполнить эту задачу:
: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
Примечание: rename
команда просто выводится ECHO для отладки в приведенном выше фрагменте кода; удаляйте начальные символы ECHO
(используйте ren "%%~G" "!_fileB!%~2"
) не раньше, чем будет выполнена отладка!
Выход:
==> 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 . . .
Ресурсы(обязательно к прочтению, не полностью):
- (справочник команд)Индекс AZ командной строки Windows CMD
- (дополнительные особенности)Синтаксис командной строки оболочки Windows CMD
- (
%~G
и%~1
т.д. специальная страница)Аргументы командной строки (параметры) - (
set "_fileB=!_fileA:%_string%=!"
и т. д.)Редактировать/Заменить переменную