2017-07-28 4 views
1

Ich bin ein Neuling mit Windows-Batch-Befehl, also bitte ersparen Sie mir für jede irrelevante Hilfe. Grundsätzlich möchte ich bestimmte Dateien mit Typ Befehl von Windows zusammenführen, aber da diese Dateien aus verschiedenen Quellen kommen, muss ich in Dateiname für Quellfilter suchen und nur diese Dateien zusammenführen. Ich habe versucht, unter Code zu schreiben, aber es macht nicht die Arbeit für mich.Batchdatei zum Zusammenführen bestimmter Dateien in eine Datei?

@echo off 
set filter=%1 
set final_file=%2 
echo %filter% 
echo %final_file% 
for %f in (*.dlt) do(
    echo %f 
    if find %filter "%f ( 
     do type "%f" >> %final_file 
    ) 
) 
+0

jedes '% f' in Ihrer' for'-Anweisung muss '%% f' sein. Sie müssen das '%' auf der 'Metavariable' verdoppeln, wenn Sie von einer Batch-Datei laufen. Leider gibt Ihre Problembeschreibung, "es macht mir nicht den Job", nicht viele Hinweise darauf, warum der Prozess nicht das tut, was Sie von ihm erwarten. – Magoo

+0

@Mangoo Wie würden Sie das obige Problem lösen? Einfach nur daran denken, dass Sie alle Dateien mit der Endung .dlt und dem Dateinamen durchlaufen müssen, müssen den Filter 'Engine' für ex: Filexxx_Engine_27_07_2017_01.dlt enthalten und dann all diese Dateien mit type command in Engine_All.dlt zusammenführen? –

+0

Sie möchten nur '* .dlt' Dateien zusammenführen? und dein Master-Ordner befindet sich wo? – Hackoo

Antwort

1

Hier ist ein Beispiel, dass ich alle *.bat Dateien in einer Datei zusammenführen gemacht; so können Sie ganz einfach ändern, um Ihre Bedürfnisse: Nur müssen Sie die Variable Set "Filter_Ext=dlt" ändern und die Set "MasterFolder=%userprofile%\desktop" zu verkaufen

@echo off 
Mode 75,3 & Color 9E 
Title Merge all *.bat in one file 
Set "MasterFolder=%userprofile%\desktop" 
Set "OutPut=Output_Merged_Files.txt" 
Set "Filter_Ext=bat" 
If exist "%OutPut%" Del "%OutPut%" 
echo(
echo   Please Wait a while we generate the output file ... 
@For /f "delims=" %%a in ('Dir /s /b /A-D "%MasterFolder%\*.%Filter_Ext%"') Do (
cls 
echo(
echo   Please Wait a While ... Merging "%%~nxa" ... 
    (
     echo ==================================================== 
     echo Contents of "%%a" 
     echo ==================================================== 
     Type "%%a" 
     echo(
    )>> "%OutPut%" 
) 
Start "" "%OutPut%" 

bearbeiten Merge alle .dlt in einer Datei

@echo off 
Mode 75,3 & Color 9E 
Title Merge all *.dlt in one file 
Set "MasterFolder=%~1" 
Set "OutPut=Output_Merged_Files.txt" 
Set "Filter_Ext=dlt" 
Set "KeyWord=Engine" 
If exist "%OutPut%" Del "%OutPut%" 
echo(
echo   Please Wait a while we generate the output file ... 
@For /f "delims=" %%a in ('Dir /s /b /A-D "%MasterFolder%\*.%Filter_Ext%" ^|find /I "%KeyWord%"') Do (
cls 
echo(
echo   Please Wait a While ... Merging "%%~nxa" ... 
    (
     echo ==================================================== 
     echo Contents of "%%a" 
     echo ==================================================== 
     Type "%%a" 
     echo(
    )>> "%OutPut%" 
) 
Start "" "%OutPut%" 
+0

Dies ist perfekt, aber ich brauche nur zwei kleine Modifikationen, 1. Von allen dlt-Dateien möchte ich nur dlt-Dateien zusammenführen, die zum Beispiel Engine-String in Dateiname und 2. Ich werde diese Datei von Python aufrufen, so dass ich diese Daten als Parameter übergeben muss. –

+0

Überprüfen Sie meine letzte Änderung – Hackoo

+0

Vielen Dank. :) –

Verwandte Themen