Utwórz program wsadowy który połączy w jeden plik pliki podane jako parametry. Wykorzystaj polecenie SHIFT i sprawdz kiedy pierwszy parametr będzie pusty.
@echo off - Ta linia wyłącza domyślne wyświetlanie komend na ekranie, co oznacza, że wiersz poleceń nie będzie wyświetlać każdej wykonywanej komendy.setlocal enabledelayedexpansion - To ustawienie włącza opóźnione rozwijanie zmiennych (!zmienna!), co jest używane wewnątrz pętli, aby odwoływać się do dynamicznie zmieniających się zmiennych.set mergedFile=output.txt - Tworzy zmienną mergedFile, która przechowuje nazwę docelowego pliku wynikowego.del /q !mergedFile! - Usuwa wcześniejszy plik wynikowy (jeśli istnieje) o nazwie output.txt.:MergeFiles - Oznacza etykietę rozpoczęcia pętli, która będzie łączyć pliki.if "%~1"=="" goto :End - To jest warunek, który sprawdza, czy pierwszy parametr %1 jest pusty. Jeśli tak (czyli brak kolejnych plików do połączenia), program przechodzi do etykiety End.copy /b !mergedFile!+%1 !mergedFile! - Ta komenda używa polecenia copy do połączenia pliku docelowego !mergedFile! z aktualnym plikiem %1 i wynik zapisuje z powrotem w pliku !mergedFile!. Dzięki temu, zawartość kolejnych plików jest stopniowo dodawana do pliku wynikowego.shift - To polecenie przesuwa wszystkie parametry o jedno miejsce w lewo, co oznacza, że %1 staje się %2, %2 staje się %3, itd. Dzięki temu w każdej iteracji pętli przetwarzany jest kolejny plik.goto :MergeFiles - Po przetworzeniu aktualnego pliku, program wraca do etykiety MergeFiles i kontynuuje łączenie następnego pliku.:End - Ta etykieta oznacza zakończenie programu. Połączone pliki zostają zapisane w pliku output.txt.echo Pliki zostały połączone w plik: !mergedFile! - Na koniec program wyświetla komunikat informujący o zakończeniu operacji i podaje nazwę pliku wynikowego.
Odpowiedź:
@echo off
setlocal enabledelayedexpansion
set mergedFile=output.txt
del /q !mergedFile!
:MergeFiles
if "%~1"=="" goto :End
copy /b !mergedFile!+%1 !mergedFile!
shift
goto :MergeFiles
:End
echo Pliki zostały połączone w plik: !mergedFile!
Ważne
Uruchom przez: nazwa_skryptu.bat plik1.txt plik2.txt plik3.txt
Wyjaśnienie:
@echo off - Ta linia wyłącza domyślne wyświetlanie komend na ekranie, co oznacza, że wiersz poleceń nie będzie wyświetlać każdej wykonywanej komendy.setlocal enabledelayedexpansion - To ustawienie włącza opóźnione rozwijanie zmiennych (!zmienna!), co jest używane wewnątrz pętli, aby odwoływać się do dynamicznie zmieniających się zmiennych.set mergedFile=output.txt - Tworzy zmienną mergedFile, która przechowuje nazwę docelowego pliku wynikowego.del /q !mergedFile! - Usuwa wcześniejszy plik wynikowy (jeśli istnieje) o nazwie output.txt.:MergeFiles - Oznacza etykietę rozpoczęcia pętli, która będzie łączyć pliki.if "%~1"=="" goto :End - To jest warunek, który sprawdza, czy pierwszy parametr %1 jest pusty. Jeśli tak (czyli brak kolejnych plików do połączenia), program przechodzi do etykiety End.copy /b !mergedFile!+%1 !mergedFile! - Ta komenda używa polecenia copy do połączenia pliku docelowego !mergedFile! z aktualnym plikiem %1 i wynik zapisuje z powrotem w pliku !mergedFile!. Dzięki temu, zawartość kolejnych plików jest stopniowo dodawana do pliku wynikowego.shift - To polecenie przesuwa wszystkie parametry o jedno miejsce w lewo, co oznacza, że %1 staje się %2, %2 staje się %3, itd. Dzięki temu w każdej iteracji pętli przetwarzany jest kolejny plik.goto :MergeFiles - Po przetworzeniu aktualnego pliku, program wraca do etykiety MergeFiles i kontynuuje łączenie następnego pliku.:End - Ta etykieta oznacza zakończenie programu. Połączone pliki zostają zapisane w pliku output.txt.echo Pliki zostały połączone w plik: !mergedFile! - Na koniec program wyświetla komunikat informujący o zakończeniu operacji i podaje nazwę pliku wynikowego.