J'ai une application qui génère un répertoire contenant certains fichiers lors de son ouverture. J'aimerais accéder à certains fichiers de ce répertoire pour les exporter et également les importer dans ce répertoire. La structure du répertoire ressemble à ceci:
+ Folder I know
+ Auto Generated Folder 'Name changes every time
-SomeFile
-SomeFile2
+macro
-macro1
-macro2
-macro3
Je veux travailler uniquement avec les fichiers du sous-répertoire "macro". J'ai une solution d'exportation qui fonctionne à l'aide de la commande 'for' qui examine le 'dossier que je connais' et fait une correspondance:
for /R "C:\Folder I know\" %f in ("macro*") do @xcopy "%f" "destination path" /u /y
Le commutateur / u sur la commande xcopy me permet même de ne mettre à jour que les fichiers qui existent déjà dans la destination. Maintenant, la question est, comment puis-je faire la même chose mais en sens inverse? Je souhaite copier des fichiers d’un dossier (par exemple c: \ temp) et les mettre à jour dans le dossier macro uniquement s’ils sont déjà présents.
la source
Réponses:
Je ne suis pas sûr de bien comprendre ce que vous essayez de faire, mais il semble que la
%CD%
variable d'environnement pourrait être utile. Cette variable assure le suivi du répertoire de travail actuel, y compris la lettre du lecteur et le chemin d'accès complet. Voici une capture d'écran en action.Connaissant cette variable, vous pouvez l’utiliser dans les scripts à votre convenance. Dans votre cas particulier, il semble que vous deviez peut-être copier votre script dans le dossier des macros à chaque fois qu'il est généré et l'exécuter à partir de là.
La seule façon dont vous pourriez peut-être écrire un script qui fonctionnera en externe est si vous pouvez vous emparer de la variable créée par le programme pour générer automatiquement le nom du dossier. Alternativement, si le nom du dossier généré automatiquement suit une sorte de convention que vous pouvez associer à un modèle, il existe probablement des options impliquant des instructions IF, des RegExes et des commandes de chaîne qui pourraient fonctionner pour vous.
la source
Après réflexion et essais, j'ai trouvé une solution.
La commande for ne regarde toujours que chaque fichier du dossier que je connais, y compris les sous-répertoires que je ne connais pas. Il effectue ensuite une copie xcopy en utilisant le chemin réseau sur lequel les fichiers sont sauvegardés. Le
%~nf
complément à la fin obtient le nom du fichier actuel à partir de la commande for. Il le copie ensuite dans le dossier local en utilisant le%~pf
qui obtient le chemin du fichier actuel à partir de la commande for.la source