He escrito correctamente el siguiente comando de PowerShell para recorrer cada carpeta y subcarpeta de un directorio y mostrar el contenido de cada una de esas carpetas:
Get-ChildItem -Path "C:\whiskey\Tango\Charlie" –Recurse
También escribí un script de PowerShell que funciona correctamente y puede extraer texto de cada archivo pdf en una sola carpeta.
cd "C:\whiskey"
$FILES= ls *.pdf
foreach ($f in $FILES) {
& "C:\Program Files\xpdf-tools-win-4.02\bin32\pdftotext.exe" -enc UTF-8 "$f"
}
Estoy intentando combinar ambos scripts para recorrer todas las carpetas y subcarpetas y ejecutar el programa pdftotext. Y entonces escribí:
$files=Get-ChildItem -Path "C:\whiskey\Tango\Charlie" –Recurse
foreach ($f in $files){
& "C:\Program Files\xpdf-tools-win-4.02\bin32\pdftotext.exe" -enc UTF-8 "$f"
}
; lo cual es incorrecto. Recibo el siguiente error:pdftotext.exe: Error de E/S: No se pudo abrir el archivo. Tenga en cuenta que ninguno de los archivos pdf está protegido.
Pregunta: ¿Cómo corrijo este error?
Respuesta1
Esto NO es una respuesta, sino un comentario extendido siguiendo a @FrankThomas. Parecería que el siguiente script "funciona"
$FOLDERS=@(Get-ChildItem -Path "C:\whiskey\Tango\Charlie" –Recurse)
$FOLDERS #print contents of array
foreach ($f in $FOLDERS) {
& "C:\Program Files\xpdf-tools-win-4.02\bin32\pdftotext.exe" -enc UTF-8 $f.FullName
}
De hecho, recorre cada carpeta y subcarpeta y ejecuta el programa pdftotext y, por lo tanto, extrae correctamente el contenido del archivo pdf en un archivo de texto. Sin embargo, todavía tengo un mensaje de error: pdftotext.exe: Error de E/S: No se pudo abrir el archivo "C:\whiskey\Tango\Charlie". Sospecho que el nombre de cada carpeta se guardó en la matriz $FOLDERS. Posteriormente PowerShell pasa el nombre de la carpeta a pdftotext; lo cual generará un error ya que no puede encontrar una extensión .pdf.
El siguiente es el script PS correcto:
$FOLDERS=@(Get-ChildItem -Path "C:\whiskey\Tango\Charlie" –Recurse -Filter *.pdf)
$FOLDERS #print contents of every folder
foreach ($f in $FOLDERS) {
& "C:\Program Files\xpdf-tools-win-4.02\bin32\pdftotext.exe" -enc UTF-8 $f.FullName
}
Necesito filtrar solo para archivos pdf.