Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Script Batch per controllo esistenza file

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Script Batch per controllo esistenza file

Postdi Dylan666 » 19/07/16 17:29

Buongiorno a tutti,
un po' di tempo fa avevo trovato per il web questo script che legge un txt con dentro una lista di nomi di file (uno per riga) e li cerca all'interno di una cartella e relative sottocartelle.
L'elenco dei file trovati a finire in un TXT completi del percorso nel quale si trovano.

Codice: Seleziona tutto
@echo off
SETLOCAL
SET FileList=Lista_Unica.txt
SET CheckedFiles=Esistenti.txt

REM clear CheckedFiles list
type NUL > %CheckedFiles%

FOR /R %%d IN (.) DO (
   FOR /F "tokens=*" %%a IN (%FileList%) DO (

      ECHO processing "%%~fd\%%a"
      IF EXIST "%%~fd\%%a" ECHO %%a = %%~fd\%%a >> %CheckedFiles%
   )
)


Ora mi servirebbe un TXT anche con la lista dei file non trovati in nessuna cartella.
Chi mi aiuta a modificare lo script? :P
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Sponsor
 

Postdi infinito1971 » 20/07/16 10:58

Ciao Dylan,
è molto che non scrivo batch per windows ed al momento non ho neanche la possibilità di provare quanto sto per dirti... quindi prendi col beneficio del dubbio... male che vada si tratta di un semplice test.
Lancia il tuo batch e dopo lancia il comando:
Codice: Seleziona tutto
FC Lista_unica.txt Esistenti.txt > NonTrovati.txt

Penso che possa andar bene al tuo scopo.


Un saluto,
infinito1971
Questo business è binario: o sei 1 o sei 0, vivo o morto, non esistono secondi classificati!
Avatar utente
infinito1971
Utente Senior
 
Post: 531
Iscritto il: 01/08/02 21:22
Località: Napoli

Postdi Dylan666 » 29/07/16 15:13

Il problema era più sottile e la sua soluzione ha necessitato un "capovolgimento di prospettiva".
Lo script di prima con un cliclo controllava in tutte le cartelle la presenza di uno specifico file (che io sapevo essere solo in una di esse).
Quindi la parte IF si attivava solo quando il file era presente.
Se io cerco di agire in quel punto aggiungendo un IF anche per i file NON trovati e devo analizzare (faccio un esempio) 10 cartelle, lo script mi scriverà 10 volte il nome del file non esistente, perchè effettivamente in nessuna delle cartelle controllate dal ciclo c'era il file (mentre io volevo che il file venisse elencato una volta sola).
Se invece il file era presente si sarebbe attivato una volta l'IF del file trovato (perché in almeno una cartella ci stava) e 9 volte quello del file non trovato (quindi il nome del file sarebbe stato scritto in tutte e due le liste del TXT, mentre io volevo finisse o in una o nell'altra).

Alla fine ho risolto capovolgendo il cliclo, e facendo in modo che al suo interno scorressero i file invece delle cartelle.
Inoltre ho decisco di controllare solo un singolo percorso, non tutte le sottocartelle

Codice: Seleziona tutto
SETLOCAL
SET FileList=lista_unica.txt
SET ExistingFiles=Esiste.txt
SET NotExistingFiles=Non_Esiste.txt

for /F "tokens=*" %%a in  (%FileList%) do (
ECHO Processing %%a....
IF EXIST "%%a" ECHO %%a>>%ExistingFiles%
IF NOT EXIST "%%a" ECHO %%a>>%NotExistingFiles%
)
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46

Postdi Dylan666 » 30/07/16 21:21

@ infinito1971
Comunque la tua risposta è un workaround eccezionale, grazie non conoscevo FC! :) :) :)
Avatar utente
Dylan666
Moderatore
 
Post: 38040
Iscritto il: 18/11/03 16:46


Torna a Programmazione


Topic correlati a "Script Batch per controllo esistenza file":


Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti