Объединить текстовые файлы, используя правый клик и пакетный файл

787
Sean

Я добавил пакетный файл в контекстное меню «Отправить», которое открывает командную строку в текущем каталоге. Команда для объединения всех TXT-файлов в этой папке и любых подпапках не выполняется должным образом при использовании из пакетного файла (создает 0-байтовый файл с именем output.txt), но работает правильно, если я ввожу его в cmd незамедлительный.

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

Windows 10. Любая помощь приветствуется. Благодарю.

отредактируйте взгляд здесь, удвойте кортежи по некоторым причинам: https://stackoverflow.com/questions/11711569/windows-batch-file-concatenate-all-files-in-subdirectories

0
Извините, код отображается неправильно отформатированным. Это на самом деле 4 строки. Sean 7 лет назад 0

2 ответа на вопрос

1
HelpingHand

Могут ли помочь следующие стартовые файлы .reg и командный файл:

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\"" 

Пакетный файл "E: \ menu.bat":

@ECHO OFF cd %* forfiles /s /m *.txt /c "cmd /c type @path >> %*\output.txt 
Спасибо, не могли бы вы объяснить, почему вам нужно редактировать реестр? Я супер новичок в этом. Какой это язык? Sean 7 лет назад 0
Записи реестра добавляют контекстное меню, вызываемое правой кнопкой мыши, для вызова командного файла на языке реестра Windows. Вы поместите данные в текстовый файл с расширением .reg и дважды щелкните по нему, чтобы добавить в свой реестр. Или вы можете открыть RegEdit и перейти к классам и добавить ключи самостоятельно, но это немного сложнее. Sir Adelaide 7 лет назад 0
1
LotPings
  • Пакетные файлы требуют двойных знаков процента с использованием переменных.
  • Как я вижу, нет необходимости в CMD / K,
  • ваша команда не вернулась в подкаталоги
  • Вы должны избегать обработки вновь сгенерированного файла output.txt и (повторно) инициализировать его при последующих запусках.

Измените партию на это:

@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 

Похожие вопросы