Sto provando a scrivere uno script in PowerShell per convertire in batch i file video.Comportamento test path in PowerShell
Il modo in cui intendo utilizzarlo è andare in una cartella piena di file video ed eseguirla. Utilizza un programma di conversione che può essere eseguito in "modalità riga di comando" (denominato freno a mano) e salva i file convertiti con "-android" aggiunto prima dell'estensione del file. Per esempio, se ho un file chiamato video1.avi nella cartella, dopo aver eseguito lo script la cartella ha 2 file: video1.avi e video1-android.avi
Il motivo per cui voglio farlo in questo modo è così che posso verificare se, per ogni file video, c'è una versione convertita di esso (con -android aggiunto al nome). E se è così, salta la conversione per quel file.
E questo è dove mi sto divertendo. Il problema è il comportamento del percorso di test (il cmdlet che sto utilizzando per verificare se esiste un file).
Quello che succede è se il file video ha un nome "insolito" (ad esempio nel mio caso è video [lungo] .avi) Test-Path restituisce sempre False se si tenta di verificare se quel file esiste.
Un modo semplice per testare questo è per esempio per fare questo:
Vai in una cartella vuota, corsa Blocco note per creare un file con "[" nel suo nome:
¬epad test[x].txt
Salvare il file
quindi fare questo:
Get-ChildItem | ForEach-Object {Test-Path $_.FullName}
lo fa non restituire vero! Dovrebbe giusto? Beh, non succede se il file ha "[" nel suo nome (non ho controllato nessun altro carattere speciale)
Ho capito che se si esce da "[" e "]" funziona
Test-Path 'test`[x`].txt'
restituisce true.
Come posso aggirare questo problema? Voglio essere in grado di: dato un BaseName di un file, aggiungilo "-android.avi" e controlla se esiste un file con quel nome.
Grazie, Rui
Grazie, era esattamente ciò di cui avevo bisogno – Rui