Je dois créer un fichier .BAT
qui fait ceci:
C:\myprogram\sync\data.handler
existe, quitte;C:\myprogram\html\data.sql
n'existe pas, quitte;C:\myprogram\sync\
supprimez tous les fichiers et dossiers sauf (test
, test3
et test2
).C:\myprogram\html\data.sql
dans C:\myprogram\sync\
sync.bat myprogram.ini
.Si c'était dans l'environnement Bash, c'était facile pour moi, mais je ne sais pas comment vérifier 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
)
Si vous n'avez pas besoin d'un "else", vous pouvez faire quelque chose comme ceci:
set __myVariable=
IF EXIST "C:\folder with space\myfile.txt" set __myVariable=C:\folder with space\myfile.txt
IF EXIST "C:\some other folder with space\myfile.txt" set __myVariable=C:\some other folder with space\myfile.txt
set __myVariable=
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
)
Type 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 de lot Windows pour supprimer tout ce qui se trouve dans un dossier, sauf un
Enfin, copier signifie simplement appeler COPY et appeler un autre fichier bat peut être fait 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 dossiers et les mettre dans un endroit temporaire. Après la suppression du dossier, ces trois fichiers seront restaurés.
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 expliquer ce que signifie /c /d /h /e /i /y
:
/C Continues copying even if errors occur.
/D:m-d-y 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 seulement ouvrir ces deux fichiers, vous devez simplement mettre 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 vérifier 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: