Ayuda necesaria para la programación de Powershell
Necesito crear un programa en Powershell que lea todos los archivos .TXT presentes en una carpeta, y procese los archivos .TXT uno por uno para crear archivos .WAV a partir de estos. Para convertir un archivo .TXT a un archivo .WAV utilizamos el comando del servicio de TTS de Azure en la nube “SPX”:
spx sinthesize --files C_F_46044_201806281417.txt;.ssml --audio output 46044.wav
Mi archivo .TXT tiene una convención de nombres como esta C_F_46044_201806281417.txt
, por lo que necesito extraer C
, F
y 46044
de ese nombre de archivo, y en base a esas letras moveré el archivo .WAV a las carpetas correspondientes C
-> F
.
Si el archivo es como M_E_12345_201806281417.txt
, ese archivo .WAV deberá ir a la carpeta M
-> E
.
Además, el archivo .WAV generado debe ser renombrado como 46044.WAV
o 12345.WAV
según la tercera extracción.
Después de que los archivos .TXT sean procesados con éxito y convertidos a archivos .WAV, moveremos el archivo de la ubicación de entrada a la ubicación del archivo de archivo.
$Parts[2]
–> Necesito obtener 46044
del nombre del archivo C_F_46044_201806281417.txt
A continuación se muestra la lógica de programación que he creado hasta ahora:
Set-ExecutionPolicy RemoteSigned
$delim = "_"
Get-ChildItem "C:\Users\rinki\Documents\azure\" -Filter *.txt |
Foreach-Object {
$parts = $_ -split $delim
# convertir archivo de texto a archivo wav en la carpeta C:\messages\audio\$parts[2].wav
spx synthesize --file $_ --audio output C:\messages\audio\$parts[2].wav
if ($parts[0] -match "M") {
Copy-Item -Path $_ -Destination C:\archive\messages -PassThru
}
if ($parts[0] -match "C") {
Copy-Item -Path $_ -Destination C:\archive\competitors -PassThru
}
# hacer una copia de seguridad del archivo en otra ubicación de archivo
# Copy-Item -Path $_ -Destination C:\archive\backup -PassThru
}
Set-ExecutionPolicy Restricted
davy.ai
Programa de Powershell para convertir archivos .TXT a archivos .WAV
Para crear un programa de Powershell que lea todos los archivos .TXT presentes en una carpeta y procese cada archivo .TXT para crear un archivo .WAV a partir de él, utiliza la siguiente lógica de programación:
En esta lógica, primero establecemos la política de ejecución en RemoteSigned para permitir que se ejecute el script de Powershell. Luego establecemos el delimitador para el nombre del archivo y recorremos cada archivo TXT en la carpeta especificada.
Para cada archivo TXT, dividimos el nombre del archivo en partes basadas en el delimitador y convertimos el archivo TXT a un archivo WAV utilizando el comando del servicio de TTS en la nube de Azure. Luego movemos el archivo TXT a la ubicación de archivo de archivo correspondiente basada en la primera letra del nombre del archivo.
Si la primera letra es “C”, primero movemos el archivo a la carpeta “C” y luego lo movemos a la subcarpeta correspondiente basada en la segunda letra. También renombramos el archivo WAV para que coincida con el tercer valor de análisis. Finalmente, movemos el archivo TXT a la ubicación de archivo de archivo y restablecemos la política de ejecución a restringida.