Como faço para usar um loop for e enviar para um diretório diferente

Como faço para usar um loop for e enviar para um diretório diferente
 usage: pdftotext [options] <PDF-file> [<text-file>]

Estou usando o pdftotext (xpft, uso acima) para converter todos os PDFs em um diretório (e subdiretórios) em arquivos de texto. Não importa se a estrutura foi preservada ou não, eu só quero gravar os arquivos em um diretório diferente.

Já tenho o cmd cd apontando para o diretório ("C:\input" digamos).

Então, se o caminho de um determinado arquivo de entrada for

 C:\input\filename.pdf

E eu quero produzir para

 C:\output\filename.txt

Meu comando:

 for /r %i in (*.pdf) do pdftotext "%i" -raw "C:\output\%i"

Quase funciona, mas tenta gerar saída para

 C:\input\C:\output\filename

o que obviamente causa um erro.

Como faço para resolver isso?

Responder1

Como faço para usar um loop for e enviar para um diretório diferente

Use o seguinte comando:

for /r %i in (*.pdf) do pdftotext -raw "%i" "C:\output\%~ni.txt"
  • %~niExpande %iapenas para um nome de arquivo (ou seja, remove letra de unidade, caminho e .pdfextensão)

  • %~ni.txttambém anexa uma nova extensão,.txt


Sintaxe estendida

Quando um argumento é usado para fornecer um nome de arquivo, a seguinte sintaxe estendida pode ser aplicada:

estamos usando a variável% 1 (mas isso funciona para qualquer parâmetro)

  • %~f1 Expanda %1 para um nome de caminho totalmente qualificado - C:\utils\MyFile.txt

  • %~d1 Expanda %1 apenas para uma letra de unidade - C:

  • %~p1 Expanda %1 apenas para um caminho, por exemplo, \utils\ isso inclui um \ final que será interpretado como um caractere de escape por alguns comandos.

  • %~n1 Expanda %1 para um nome de arquivo sem extensão de arquivo C:\utils\MyFile ou se apenas um caminho estiver presente (sem barra invertida) - a última pasta nesse caminho.

  • %~x1 Expandir %1 apenas para uma extensão de arquivo - .txt

  • %~s1 Altere o significado de f, n, s e x para fazer referência ao nome Short 8.3 (se existir).

  • %~1 Expanda % 1 removendo quaisquer aspas adjacentes (")

  • %~a1 Exibe os atributos do arquivo de %1

  • %~t1 Exibe a data/hora de %1

  • %~z1 Mostra o tamanho do arquivo %1

  • %~$PATH:1 Pesquise a variável de ambiente PATH e expanda %1 para o nome completo da primeira correspondência encontrada.

Os modificadores acima podem ser combinados:

  • %~dp1 Expande % 1 apenas para uma letra de unidade e caminho

  • %~sp1 Expanda %1 para um caminho reduzido para 8,3 caracteres

  • %~nx2 Expande %2 apenas para um nome de arquivo e extensão

FonteArgumentos de linha de comando (parâmetros)


Leitura adicional

informação relacionada