MERGE.BAT
@echo off
>"%~1_all.txt" (
for %%F in ("%~1*.txt") do if /i "%%F" neq "%~1_all.txt" type "%%F"
)
Uso:
merge apple
merge "water melon"
Ou, colocando tudo em um script em lote:
@echo off
call :merge apple
call :merge "water melon"
exit /b
:merge
>"%~1_all.txt" (
for %%F in ("%~1*.txt") do if /i "%%F" neq "%~1_all.txt" type "%%F"
)
exit /b
Programaticamente, descobrir todas as frutas na pasta não é trivial, já que não há uma maneira fácil em lote de aparar todos os dígitos à direita do nome base de um arquivo. Aqui está uma vez solução (não testada):
@echo off
setlocal disableDelayedExpansion
del *_all.txt 2>nul
for /f "delims=" %%F in (
'dir /b /a-d *.txt^|findstr "[^0-9][0-9]*\.txt$"'
) do call :proc "%%F"
exit /b
:proc
set "file=%~1"
set "fruit=%~n1"
setlocal enableDelayedExpansion
:trimNum
if "!fruit:~-1!" geq "0" if !fruit:~-1!" leq "9" (
set "fruit=!fruit:~0,-1!"
goto :trimNum
)
type "!file!" >>"!fruit!_all.txt"
exit /b