Discussione:
Cancellare via file batch nomi con caratteri speciali
(troppo vecchio per rispondere)
Archaeopteryx
2012-01-02 08:04:07 UTC
Permalink
Ciao NG,

Devo cancellare una serie di files tramite un file batch,
ciascuna linea della quale è del formato:

erase "nomefile"

(le virgolette ci sono, perché i nomi hanno spazi in
mezzo). Il comando fallisce su quei nomi che contengono
caratteri strani come la cediglia, le lettere accentate e
anche qualche altro carattere che ora su due piedi non mi
viene in mente. Ha invece successo in caso contrario.

Come posso risolvere?

graziassai e buon anno, con l'occasione

Apx.
SBRONZO DI RIACE
2012-01-02 10:22:44 UTC
Permalink
vuoi dire che un nome così "pippoç.txt" crea problemi al comando dos via
batch?

in effetti il problema nasce dal fatto che nel batch una volta lanciato
il nome del file viene fuori così

"pippoþ.txt"

e allora il file giustamente non viene trovato

se invece fai esegui cmd e metti il comando del pippoç.txt
l'eliminazione avviene correttamente, segno che il problema nasce nel
momento in cui crei il file bat con un editor di testo

per creare un file batch corretto che non alteri il carattere utilizza
edit.com (vecchio editor di testo)

start esegui edit.com

nell'editor minimale che si apre scrivi del pippoç.txt e salva

in Xp questo vecchio editor a 16 bit esiste non so se windows7 c'è o
funzioni ancora

se non dovessi trovare tale editor in windows 7 prova così apri una
console cmd e scrivi

echo del pippoç.txt>delete.bat

si dovrebbe creare un file bat
Luca Amicone
2012-01-02 17:46:41 UTC
Permalink
Il 02/01/2012 18.42.52, pigiando alacremente sui tastini, SBRONZO DI
Post by SBRONZO DI RIACE
in effetti il problema nasce dal fatto che nel batch una volta lanciato
il nome del file viene fuori così
"pippoþ.txt"
e allora il file giustamente non viene trovato
In effetti la spiegazione dovrebbe essere quella corretta.
A questo punto potrebbe trattarsi di un problema di CodePage che è
impostata sulla shell che esegue lo script.
Quindi:
1) al posto di "erase" scrivi "dir" e ridirigi l'output su un file di testo
2) prova ad utilizzare il comando chcp per cambiare la codepage corrente
all'interno dello script fin quando non trovi quella opportuna
3) ripristina il comando "erase" ed eventualmente anche la redirezione
su file di testo.
4) facce sape'!
--
Luca Amicone
Archaeopteryx
2012-01-02 18:24:16 UTC
Permalink
Post by Luca Amicone
4) facce sape'!
devo vedere se posso adattare la spiegazione, i files son
qualche migliaio e la cosa deve essere automatizzata in
qualche modo. Ho solo la lista dei files che poi smanazzo
con un editor (che peraltro è ASCII puro, lo uso per
programmare), e redirigere il nomefile uno per uno sarebbe
duretta.
Luca Amicone
2012-01-02 18:50:45 UTC
Permalink
Il 02/01/2012 19.49.43, pigiando alacremente sui tastini, Archaeopteryx
e redirigere il nomefile uno per uno sarebbe duretta.
La redirezione sarebbe solo in fase di test. Quello che spero possa
risolvere è il chcp in testa allo script stesso.
--
Luca Amicone
SBRONZO DI RIACE
2012-01-03 09:57:13 UTC
Permalink
Post by Luca Amicone
Il 02/01/2012 19.49.43, pigiando alacremente sui tastini,
Archaeopteryx
e redirigere il nomefile uno per uno sarebbe duretta.
La redirezione sarebbe solo in fase di test. Quello che spero possa
risolvere è il chcp in testa allo script stesso.
--
Luca Amicone
no su xp (e probabilmente anche su windows 7) il chcp non risolve nulla,
già provato

l'unica soluzione è usare edit.com (se possibile) come editor per creare
i bat file oppure fare nella cartella in cui ci sono i file da
cancellare un

dir /b /s >listafiles.txt

per ottenere la lista con il percorso
a questo punto cancella i nomi dei file che non vuole cancellare

crea un bat con dentro

for /f %%a IN (lista.txt) do del %%a

il quale cancellerà tutti file contenuti in lista.txt

se vuole può anche anche dare il comando direttamente dalla console cmd
che ha aperto per dare il comando dir

for /f %a IN (lista.txt) do del %a
Archaeopteryx
2012-01-08 18:22:08 UTC
Permalink
[...] il quale cancellerà tutti file contenuti in
lista.txt
dopo essere impazzito diversi giorni ha funzionato
lanciato come
amministratore e con sintassi "del /f <eccetera>".

grazie a tutti!

Apx.

Loading...