“s'il n'existe pas de commande” dans le fichier de commandes
J'ai besoin d'écrire du code dans un fichier de commandes windows.
La partie intéressée de ce script devrait créer un dossier si ce dossier n'existe pas encore, mais, si ce dossier existe déjà, il doit PAS écraser le contenu.
J'ai essayé quelque chose comme ceci:
if not exist %USERPROFILE%\.qgis-custom (
mkdir %USERPROFILE%\.qgis-custom
xcopy %OSGEO4W_ROOT%\qgisconfig %USERPROFILE%\.qgis-custom /s /v /e
)
Mais je ne suis pas sûr si je suis en train de faire.
Merci
- Si le dossier existe, il ne doit pas être écrasé, mais si l'un second fichier sera copié? Qui est, les fichiers source (OSGEO4W_ROOT) n'est pas déjà présent dans la cible (de l'UTILISATEUR).
- non, je dirais que non. Répertoire doit rester comme il est.
Vous devez vous connecter pour publier un commentaire.
Vous l'avez presque terminé. La logique est correcte, juste quelques petits changements.
Ce code vérifie l'existence du dossier (voir la fin de la barre oblique inverse, juste pour différencier un dossier à partir d'un fichier avec le même nom).
Si elle n'existe pas, elle est créée et la création d'état est vérifié. Si un fichier avec le même nom existe ou vous n'avez pas les droits pour créer le dossier, il échouera.
Si everyting est ok, les fichiers sont copiés.
Tous les chemins sont indiqués pour éviter les problèmes avec les espaces.
Il peut être simplifié (un peu moins de code, il ne signifie pas que c'est mieux). Une autre option est de toujours essayer de créer le dossier. Si il n'y a pas d'erreurs, puis copiez les fichiers
Dans les deux exemples de code, les fichiers ne sont pas copiés si le dossier n'est pas créé lors de l'exécution de script.
MONTÉ Comme dbenham commentaires, le même code peut être écrite sur une seule ligne,
Le code après le
&&
ne sera exécutée que si la commande précédente ne permet pas de définir errorlevel. Simkdir
échoue,xcopy
n'est pas exécutée.mkdir
provoquera une erreur.md "%USERPROFILE%\.qgis-custom" 2>nul && xcopy "%OSGEO4W_ROOT%\qgisconfig" "%USERPROFILE%\.qgis-custom" /s /v /e
Lors de l'essai pour les répertoires n'oubliez pas que chaque répertoire contient deux fichiers spéciaux.
L'un est appelé le '.' et l'autre '..'
. est le répertoire propre nom, tout en .. est le nom du répertoire parent.
Pour éviter de barre oblique de fin des problèmes juste un test pour voir si le répertoire sait que c'est propre nom.
par exemple: