Como eu uso um loop for e imprimo em um diretório diferente?

1
 usage: pdftotext [options] <PDF-file> [<text-file>]

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

Eu tenho cmd cd já apontando para o diretório ("C: \ input" dizer).

Portanto, 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 produzir para

 C:\input\C:\output\filename

que obviamente causa um erro.

Como posso resolver isso?

    
por Some_Guy 10.06.2015 / 13:31

1 resposta

2

Como eu uso um loop for e a saída para um diretório diferente

Use o seguinte comando:

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

  • %~ni.txt também acrescenta uma nova extensão, .txt

Sintaxe estendida

When an argument is used to supply a filename then the following extended syntax can be applied:

we are using the variable %1 (but this works for any parameter)

  • %~f1 Expand %1 to a Fully qualified path name - C:\utils\MyFile.txt

  • %~d1 Expand %1 to a Drive letter only - C:

  • %~p1 Expand %1 to a Path only e.g. \utils\ this includes a trailing \ which will be interpreted as an escape character by some commands.

  • %~n1 Expand %1 to a file Name without file extension C:\utils\MyFile or if only a path is present (with no trailing backslash) - the last folder in that path.

  • %~x1 Expand %1 to a file eXtension only - .txt

  • %~s1 Change the meaning of f, n, s and x to reference the Short 8.3 name (if it exists.)

  • %~1 Expand %1 removing any surrounding quotes (")

  • %~a1 Display the file attributes of %1

  • %~t1 Display the date/time of %1

  • %~z1 Display the file size of %1

  • %~$PATH:1 Search the PATH environment variable and expand %1 to the fully qualified name of the first match found.

The modifiers above can be combined:

  • %~dp1 Expand %1 to a drive letter and path only

  • %~sp1 Expand %1 to a path shortened to 8.3 characters

  • %~nx2 Expand %2 to a file name and extension only

Fonte Argumentos da Linha de Comando (Parâmetros)

Outras leituras

por 10.06.2015 / 13:46