Comment vérifier si un fichier existe dans un fichier .BAT DOS (Invite de commandes Windows)?

Je dois créer un fichier .BAT qui fait ceci:

  1. Si C:\myprogram\sync\data.handler existe, quittez;
  2. Si C:\myprogram\html\data.sql n’existe pas, quittez;
  3. Dans C:\myprogram\sync\ supprime tous les fichiers et dossiers sauf ( test , test3 et test2 )
  4. Copiez C:\myprogram\html\data.sql dans C:\myprogram\sync\
  5. Appelez un autre fichier de commandes avec l’option sync.bat myprogram.ini .

Si c’était dans l’environnement Bash, c’était facile pour moi, mais je ne sais pas comment tester si un fichier ou un dossier existe et s’il s’agit d’un fichier ou d’un dossier.

Vous pouvez utiliser IF EXIST pour rechercher un fichier:

 IF EXIST "filename" ( REM Do one thing ) ELSE ( REM Do another thing ) 

Voici un exemple pratique de recherche d’un fichier ou d’un dossier:

 REM setup echo "some text" > filename mkdir "foldername" REM finds file IF EXIST "filename" ( ECHO file filename exists ) ELSE ( ECHO file filename does not exist ) REM does not find file IF EXIST "filename2.txt" ( ECHO file filename2.txt exists ) ELSE ( ECHO file filename2.txt does not exist ) REM folders must have a trailing backslash REM finds folder IF EXIST "foldername\" ( ECHO folder foldername exists ) ELSE ( ECHO folder foldername does not exist ) REM does not find folder IF EXIST "filename\" ( ECHO folder filename exists ) ELSE ( ECHO folder filename does not exist ) 

Tapez IF /? pour obtenir de l’aide sur si, il explique clairement comment utiliser IF EXIST.

Pour supprimer une arborescence complète à l’exception de certains dossiers, reportez-vous à la réponse à cette question: Script batch Windows pour supprimer tout dans un dossier, sauf un

Enfin, copier signifie simplement appeler COPY et appeler un autre fichier de chauve-souris peut se faire comme ceci:

 MYOTHERBATFILE.BAT sync.bat myprogram.ini 

Voici un bon exemple sur la façon de faire une commande si un fichier existe ou n’existe pas:

 if exist C:\myprogram\sync\data.handler echo Now Exiting && Exit if not exist C:\myprogram\html\data.sql Exit 

Nous allons prendre ces trois fichiers et les placer dans un endroit temporaire. Après avoir supprimé le dossier, il restaure ces trois fichiers.

 xcopy "test" "C:\temp" xcopy "test2" "C:\temp" del C:\myprogram\sync\ xcopy "C:\temp" "test" xcopy "C:\temp" "test2" del "c:\temp" 

Utilisez la commande XCOPY :

 xcopy "C:\myprogram\html\data.sql" /c /d /h /e /i /y "C:\myprogram\sync\" 

Je vais vous expliquer ce que signifie /c /d /h /e /i /y :

  /C Continues copying even if errors occur. /D:mdy Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time. /H Copies hidden and system files also. /E Copies directories and subdirectories, including empty ones. Same as /S /E. May be used to modify /T. /T Creates directory structure, but does not copy files. Does not include empty directories or subdirectories. /T /E includes /I If destination does not exist and copying more than one file, assumes that destination must be a directory. /Y Suppresses prompting to confirm you want to overwrite an existing destination file. `To see all the commands type`xcopy /? in cmd 

Appelez un autre fichier de commandes avec l’option sync.bat myprogram.ini.

Je ne suis pas sûr de ce que vous entendez par là, mais si vous voulez juste ouvrir ces deux fichiers, vous n’avez qu’à placer le chemin du fichier comme

 Path/sync.bat Path/myprogram.ini 

Si c’était dans l’environnement Bash, c’était facile pour moi, mais je ne sais pas comment tester si un fichier ou un dossier existe et s’il s’agit d’un fichier ou d’un dossier.

Vous utilisez un fichier de commandes. Vous avez mentionné précédemment que vous devez créer un fichier .bat pour utiliser ceci:

Je dois créer un fichier .BAT qui fait ceci: