Concatene arquivos de texto usando o botão direito do mouse e o arquivo de lote

0

Eu adicionei um arquivo em lote no menu "enviar para" que abre um prompt de comando no diretório atual. O comando para concatenar todos os arquivos .txt nessa pasta e quaisquer subpastas não é executado corretamente quando usado a partir do arquivo em lote (produz um arquivo de 0 byte chamado output.txt), mas funciona corretamente se eu digitá-lo no cmd prompt.

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

Windows 10. Qualquer ajuda é apreciada. Obrigado.

edite veja aqui, duplique as tuplas por algum motivo: link

    
por Sean 03.03.2017 / 00:58

2 respostas

1

Os arquivos .reg e batch a seguir ajudam como um iniciador:

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

Arquivo em lote "E: \ menu.bat":

@ECHO OFF
cd  %*
forfiles /s /m *.txt /c "cmd /c type @path >> %*\output.txt
    
por 03.03.2017 / 01:43
1
  • Arquivos em lote exigem sinais de porcentagem duplicados usando as variáveis for.
  • Como eu vejo, não há necessidade do cmd / k,
  • seu comando não recorreu a subdiretórios
  • você precisa evitar o processamento do output.txt recém-gerado e (re) inicializá-lo em execuções sucessivas.

Altere o lote para este:

@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
    
por 03.03.2017 / 02:02