Estoy intentando escribir una secuencia de comandos en PowerShell para convertir archivos de video por lotes.Comportamiento de la ruta de prueba en Powershell
La manera en que intento usarlo es ir a una carpeta llena de archivos de video y ejecutarla. Utiliza un programa de conversión que se puede ejecutar en el "modo de línea de comando" (llamado freno de mano) y guarda los archivos convertidos con "-android" adjunto a ellos antes de la extensión del archivo. Por ejemplo, si tengo un archivo llamado video1.avi en la carpeta, después de ejecutar el script, la carpeta tiene 2 archivos: video1.avi y video1-android.avi
La razón por la que quiero hacer esto de esta manera es que puedo verificar si, para cada archivo de video, hay una versión convertida de este (con -android adjunto al nombre). Y si es así, omita la conversión para ese archivo.
Y aquí es donde estoy teniendo problemas. El problema es el comportamiento de la ruta de prueba (el cmdlet que estoy usando para probar si existe un archivo).
Lo que sucede es que si el archivo de video tiene un nombre "inusual" (por ejemplo en mi caso es video [largo] .avi) Test-Path siempre devuelve False si intentas verificar si ese archivo existe.
Una manera fácil para que usted pueda probar esto es, por ejemplo, para hacer esto:
Ir a una carpeta vacía, plazo bloc de notas para crear un archivo con "[" en su nombre:
¬epad test[x].txt
Guarde el archivo
continuación, haga lo siguiente:
Get-ChildItem | ForEach-Object {Test-Path $_.FullName}
lo hace no es verdad! Debería? Bueno, no si el archivo tiene "[" en su nombre (no revisé ningún otro carácter especial)
Me he dado cuenta de que si escapas el "[" y "]" funciona
Test-Path 'test`[x`].txt'
devuelve true.
¿Cómo puedo solucionar este problema? Quiero poder: dado un Nombre Base de un archivo, añádalo "-android.avi" y verifique si existe un archivo con ese nombre.
Gracias, Rui
Gracias, eso era exactamente lo que necesitaba – Rui