¿Cómo uso un bucle for y envío a un directorio diferente?

¿Cómo uso un bucle for y envío a un directorio diferente?
 usage: pdftotext [options] <PDF-file> [<text-file>]

Estoy usando pdftotext (xpft, uso anterior) para convertir todos los archivos PDF en un directorio (y subdirectorios) en archivos de texto. No importa si la estructura se conserva o no, solo quiero escribir los archivos en un directorio diferente.

Ya tengo cmd cd apuntando al directorio ("C:\input", digamos).

Entonces, si la ruta de un archivo de entrada determinado es

 C:\input\filename.pdf

Y quiero enviar a

 C:\output\filename.txt

Mi comando:

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

Casi funciona, pero intenta generar salida a

 C:\input\C:\output\filename

lo que obviamente causa un error.

¿Cómo puedo solucionar esto?

Respuesta1

¿Cómo uso un bucle for y envío a un directorio diferente?

Utilice el siguiente comando:

for /r %i in (*.pdf) do pdftotext -raw "%i" "C:\output\%~ni.txt"
  • %~niSe expande %isolo a un nombre de archivo (es decir, elimina la letra de unidad, la ruta y .pdfla extensión)

  • %~ni.txttambién añade una nueva extensión,.txt


Sintaxis extendida

Cuando se utiliza un argumento para proporcionar un nombre de archivo, se puede aplicar la siguiente sintaxis extendida:

estamos usando la variable %1 (pero esto funciona para cualquier parámetro)

  • %~f1 Expanda %1 a un nombre de ruta completo: C:\utils\MyFile.txt

  • %~d1 Expanda %1 solo a una letra de unidad - C:

  • %~p1 Expanda %1 solo a una ruta, por ejemplo, \utils\, esto incluye un \ final que algunos comandos interpretarán como un carácter de escape.

  • %~n1 Expanda %1 a un nombre de archivo sin extensión de archivo C:\utils\MyFile o, si solo hay una ruta (sin barra invertida al final), la última carpeta en esa ruta.

  • %~x1 Expande %1 a una extensión de archivo únicamente: .txt

  • %~s1 Cambie el significado de f, n, s y x para hacer referencia al nombre corto 8.3 (si existe).

  • %~1 Expande %1 eliminando las comillas circundantes (")

  • %~a1 Mostrar los atributos del archivo de %1

  • %~t1 Mostrar la fecha/hora de %1

  • %~z1 Muestra el tamaño del archivo de %1

  • %~$PATH:1 Busque la variable de entorno PATH y expanda %1 hasta el nombre completo de la primera coincidencia encontrada.

Los modificadores anteriores se pueden combinar:

  • %~dp1 Expanda %1 a una letra de unidad y ruta únicamente

  • %~sp1 Expande %1 a una ruta reducida a 8,3 caracteres

  • %~nx2 Expanda %2 a un nombre de archivo y extensión únicamente

FuenteArgumentos de la línea de comando (parámetros)


Otras lecturas

información relacionada