Verketten Sie Textdateien mit der rechten Maustaste und der Stapelverarbeitungsdatei

832
Sean

Ich habe eine Batch-Datei zum Rechtsklick-Menü "Senden an" hinzugefügt, die eine Eingabeaufforderung im aktuellen Verzeichnis öffnet. Der Befehl zum Verketten aller TXT-Dateien in diesem Ordner und in allen Unterordnern wird nicht ordnungsgemäß ausgeführt, wenn er von der Stapeldatei verwendet wird (erzeugt eine 0-Byte-Datei mit dem Namen output.txt), funktioniert jedoch ordnungsgemäß, wenn ich sie in die Cmd-Datei eingebe Prompt.

%~d1 cd "%~p1" start cmd.exe /K  "for %f in (*.txt) do type "%f" >> output.txt" 

Windows 10. Jede Hilfe wird geschätzt. Vielen Dank.

Bearbeiten Sie hier, und verdoppeln Sie die Tupel aus irgendeinem Grund: https://stackoverflow.com/questions/11711569/windows-batch-file-concatenate-all-files-in-subdirectories

0
Tut mir leid, der Code erscheint nicht korrekt formatiert. Es sind eigentlich 4 Zeilen. Sean vor 7 Jahren 0

2 Antworten auf die Frage

1
HelpingHand

Würde die folgende .reg- und Batchdatei als Starthilfe helfen:

Windows Registry Editor Version 5.00  [HKEY_CLASSES_ROOT\Directory\shell\Run Batch script] @="&Run text file concatenate"  [HKEY_CLASSES_ROOT\Directory\shell\Run Batch script\command] @="\"E:\\menu.bat\" \"%1\"" 

Batchdatei "E: \ menu.bat":

@ECHO OFF cd %* forfiles /s /m *.txt /c "cmd /c type @path >> %*\output.txt 
Danke, können Sie erklären, warum Sie die Registrierung bearbeiten müssen? Ich bin super neu dazu. Welche Sprache ist das? Sean vor 7 Jahren 0
Die Registrierungseinträge fügen das Kontextmenü der rechten Maustaste hinzu, um die Batchdatei mit der Windows-Registrierungssprache aufzurufen. Sie fügen die Daten in eine Textdatei mit der Erweiterung.reg ein und doppelklicken Sie darauf, um sie Ihrer Registrierung hinzuzufügen. Sie können RegEdit auch öffnen, zu den Klassen navigieren und die Schlüssel selbst hinzufügen, aber das ist ein bisschen schwieriger. Sir Adelaide vor 7 Jahren 0
1
LotPings
  • Batch-Dateien erfordern ein doppeltes Prozentzeichen mit den for-Variablen.
  • Wie ich es sehe gibt es keine Notwendigkeit für die cmd / k,
  • Ihr Befehl kam nicht in Subdirs zurück
  • Sie müssen die Verarbeitung der neu generierten Ausgabe.txt vermeiden und sie bei aufeinanderfolgenden Läufen (erneut) initialisieren.

Ändern Sie den Stapel so:

@Echo off Pushd "%~dp1" Type Nul >output.txt for /F "delims=" %%f in ( ' Dir /B/S/A-D *.txt ^|find /v /i "output.txt" ' ) do type "%%f" >> output.txt