Verifica dell'esistenza di una cartella utilizzando un file .bat [chiuso]


160

Vorrei poter verificare se esiste una determinata cartella (Cartella A) e, in tal caso, visualizzare un messaggio e uscire dal file batch.

Se FolderA non esiste, vorrei quindi verificare se esiste un'altra cartella (FolderB). Se FolderB non esiste, dovrebbe essere visualizzato un messaggio e la cartella dovrebbe essere creata, e se FolderB esiste, dovrebbe essere visualizzato un messaggio che lo dice.

Qualcuno ha qualche idea sul codice che potrei semplicemente usare sul blocco note per creare un file batch che mi permetta di farlo?

Tutto ciò deve essere fatto in un unico .batfile.


7
Una ricerca su Google fornisce Test se esiste un'unità o una directory . E questo spiega esattamente come fare quello che stai chiedendo ...
NealB,

2
Una ricerca per "directory di file batch esiste" qui su SO trovato Windows Batch File Cerca directory se non esiste creare quindi spostare il file , che mostra come vedere se esiste una directory o meno. Qui ci sono post sulla creazione di una directory anche da un file batch. Si prega di fare alcune ricerche di base prima di pubblicare nuove domande; è probabile che la domanda sia stata posta qui in precedenza. Grazie.
Ken White,

3
Il batch di Windows è un linguaggio di programmazione, controlla se il file esiste è un'attività di programmazione. Appare in tema.
Audrius Meskauskas,

1
Dovrebbe essere chiuso come duplicato di Come verificare se un file è una directory in uno script batch? invece di "off-topic"
Michael Freidgeim,

Risposte:


260

Prova a usare questo:

IF EXIST yourfilename (
echo Yes 
) ELSE (
echo No
)

Sostituire yourfilename con il nome del file.

Per una directory guarda questo https://jeffpar.github.io/kbarchive/kb/065/Q65994/

C:
IF NOT EXIST C:\WIN\ GOTO NOWINDIR
CD \WIN
:NOWINDIR

barra rovesciata finale ('\') sembra essere sufficiente per distinguere tra directory e file ordinari.


2
La seconda parte della tua risposta è incompleta.
martedì

4
if exist "c:\folder\nul" echo oknon ha funzionato per me in Windows 7. Ciò che ha funzionato è stato if exist "c:\folder\" echo ok.
Alexander Gelbukh,

2
@AlexanderGelbukh - Hai ragione, if exist "networkPath\nul"puoi segnalare erroneamente un file come una cartella su unità di rete di Windows. Sfortunatamente, if exist "networkPath\"soffre lo stesso problema. Vedere l'aggiornamento 2015/12/08 a stackoverflow.com/a/8669636/1012053 per una tecnica che è stata affidabile in tutta la mia prova.
dbenham,

@AlexanderGelbukh Funziona senza virgolette. Naturalmente, questo ti limita quando si tratta di avere spazi nel percorso della directory.
Marc.277 del

1
Sì, senza virgolette funziona. Tuttavia, con le virgolette non funziona nemmeno per le unità locali: if exist c:\Windows\nul echo okdice ok, ma if exist "c:\Windows\nul" echo oknon dice nulla. Come ho detto, mentre if exist "c:\Program Files\nul" echo oknon dice nulla, if exist "c:\Program Files\" echo okdice oke quindi funziona anche per il percorso con gli spazi.
Alexander Gelbukh,

34

Penso che la risposta sia qui (possibilmente duplicata):

Come verificare se un file è una directory in uno script batch?

IF EXIST %VAR%\NUL ECHO It's a directory

Sostituisci% VAR% con la tua directory. Leggere la risposta originale perché include dettagli sulla gestione degli spazi bianchi nel nome della cartella.

Come ha detto foxidrive, questo potrebbe non essere affidabile su Windows di classe NT. Funziona per me, ma so che ha alcune limitazioni (che puoi trovare nella domanda di riferimento)

if exist "c:\folder\" echo folder exists 

dovrebbe essere sufficiente per le finestre moderne.


6
La tecnica \ nul non è affidabile su Windows di classe NT. Comunque andava bene in MSDOS e Win9x. La soluzione nella moderna Windows è semplicemente if exist "c\:folder\" echo folder exists
foxidrive

1
Penso che questo sia anche specificato nel link di riferimento.
Cosmin Vană,

Ancora non capisco perché sono stato sottoposto a downgrade (che significa "Non utile"). Ho aggiunto il riferimento alla domanda in cui le risposte coprono lo scenario richiesto.
Cosmin Vană,

Non utile potrebbe essere perché non è applicabile alle macchine attuali e la tua risposta precedente non ha fatto alcuna distinzione. Alcune persone ridurranno comunque la tua risposta perché non risponde alla domanda come posta.
foxidrive,

2
da support.microsoft.com/kb/65994 "NUL esiste sempre su un'unità FAT MS-DOS locale" - come inE:\NUL
bloke CAD
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.