Suite

Est-ce que r.mask peut être appelé à partir d'un fichier batch ?


J'utilise un script shell appelé par un fichier batch. Le script shell contient les scripts GRASS que j'utilise pour mon programme. Chaque fois que j'utilise le script r.mask, il affiche l'erreurr.mask : commande introuvable.

Est-ce que r.mask peut être appelé à partir d'un fichier batch ? Comment puis-je utiliser r.mask à l'aide d'un fichier batch et d'un script shell ?


Un script shell appelé par un fichier batch ? Vous utilisez donc GRASS sur une box *nix connectée à une box Windows…

Dans tous les cas, vous devez vous assurer que vous avez correctement configuré l'environnement sur la machine sur laquelle GRASS est installé. À tout le moins, vous devez vous assurer que la variable d'environnement PATH contient le répertoire dans lequel les scripts GRASS peuvent être trouvés. Sur ma machine Ubunutu, c'est/usr/lib/grass64/scripts/mais votre installation peut être différente.

Voir ici pour de nombreuses informations utiles sur la configuration de l'environnement GRASS et l'exécution de scripts shell.


Je comprends que vous travaillez avec winGRASS. S'il s'agit de winGRASS 6, essayezr.masque.batou alorsr.masque.shpour l'appeler.


Vous ne savez pas très bien où se trouve app1.exe.

S'il partage le dossier avec run1.bat, modifiez run1.bat

%0 fait référence au lot en cours d'exécution et au modificateur

dp renvoie le lecteur et le chemin (avec une barre oblique inverse.)

La réponse à votre question peut être tirée d'une question similaire sur Stack Overflow.

En utilisant les variables mentionnées ici, vous pouvez mettre à jour run1.bat pour appeler app1.exe avec la ligne suivante : %

La variable dp0 inclut une barre oblique finale.) Cela indiquera au fichier batch d'exécuter l'exécutable à partir de l'emplacement du fichier batch actuel.


Oui, c'est plus facile que vous ne le pensez. Dans la vue Approuver/Rejeter, la possibilité de vérifier les éléments est supprimée. Cependant, à partir de la vue de tous les éléments (ou des vues personnalisées pour vous aider à filtrer), cochez simplement les éléments que vous souhaitez approuver, puis dans le ruban Éléments, à l'extrême droite, vous trouverez Approuver/Rejeter (l'icône est une page de document avec un coche et un x dessus). Cliquer dessus avec plusieurs éléments sélectionnés appliquera le statut d'approbation à tous les éléments sélectionnés. Il en va de même pour les bibliothèques de documents, sauf que le ruban Éléments est le ruban Fichiers.

J'ai mis en place un bouton d'approbation/rejet de tâches par lots avec la solution de ferme de studio visuel, j'espère que cela pourra aider quelqu'un (le statut d'approbation du contenu peut être modifié par le flux de travail, mais pas nécessairement)

Créez une solution de batterie de serveurs VS, ajoutez un élément et saisissez-le dans Element.xml :

Ajoutez une page aspx, ajoutez des boutons (approuver, rejeter, etc.), puis dans l'action d'approbation :

Visitez http://. /_layouts/sitemanager.aspx pour accéder au gestionnaire de site, sélectionnez les fichiers qui vous intéressent et utilisez l'élément "Actions" dans la barre de navigation supérieure.

(Dans Sharepoint Server 2013. Je ne sais pas si c'est la même chose pour les autres versions).

Trouvé par le biais d'URL et d'emplacements SharePoint célèbres sur les blogs de développeurs MS.

Je n'arrête pas de tomber sur ça et d'oublier comment je l'ai fait. Je viens de me le rappeler - J'espère que cela aidera quelqu'un (peut-être même un futur pour moi lorsque j'oublierai et que je chercherai à nouveau).

Je viens d'ajouter un champ à la liste appelé "Batch Approve Trigger" (ou ce que vous voulez) et je lui ai donné une valeur initiale de "1". J'ai créé mon flux de travail pour mettre à jour le statut d'approbation de brouillon-->en attente-->approuvé. Définissez le flux de travail pour qu'il s'exécute chaque fois qu'un élément est modifié. Modification de tous les « déclencheurs d'approbation par lots » en « 2 » (glisser sélectionner coller dans la vue de la feuille de données de la liste). Viola - le workflow s'exécute sur tous les éléments modifiés et définit le statut sur Approuvé.


En plus de la réponse de @splattne, utilisez exit /b dans le fichier batch CALL ed si vous devez revenir plus tôt.

Une autre option (pour la compatibilité avec le DOS antérieur à la version 3.3 :-) ) consiste à appeler le processus de commande avec l'option enfant (/c) et le nom de l'autre fichier batch à traiter. Cela fera également un appel au lieu d'une chaîne, et fonctionnera même sur des machines vraiment anciennes (juste au cas où quelqu'un traverserait cela et s'en soucierait). :-)

Ce que j'essaie de faire ici, c'est d'appeler ces deux fichiers batch dans une séquence.

En fait, il échoue au niveau du script enfant, car le contrôle ne revient pas au script principal

Sanket, n'appelez pas directement le fichier batch. Utilisez la commande "APPEL". Voir éclabousserl'exemple.


Votre "shell" ou l'interface de ligne de commande s'appelle bash. Vous pouvez écrire un script bash similaire à un fichier batch. Un script bash commence par un She-bang #!/bin/bash et n'est rien de plus qu'un ensemble de commandes à exécuter dans une séquence pour les exécuter. Vous n'êtes pas limité à la commande bash, vous pouvez appeler n'importe quel binaire sur le système en utilisant le chemin complet vers le binaire ou le script.

Un fil conducteur sur learning/books/terminal/bash/Linux etc. Linux Command Line Learning Resources - cortman https://help.ubuntu.com/community/CommandLineResources

Mon premier bash consistait en plusieurs commandes que j'exécutais plusieurs fois dans le terminal. J'ai donc répertorié l'historique avec la commande history et les ai copiés dans un fichier texte. La première ligne doit être celle-ci (pas d'espace avant et première ligne) :

Et après l'enregistrement, vous devez le rendre exécutable.

Notez que c'est une bonne idée de mettre vos scripts au même endroit, afin de pouvoir les exécuter sans avoir besoin de chemin. Si vous créez un répertoire bin dans votre home ( mkdir

/bin ) la prochaine fois que vous vous connecterez, cela sera automatiquement inclus dans votre PATH.

Edit : Si vous voulez que le script soit disponible pour tous les utilisateurs, placez-le dans /usr/local/bin et faites-le appartenir à root avec accès rx par d'autres sudo chown root:root /usr/local/bin/your_script sudo chmod 655 /usr/local/bin/votre_script


Itérer à travers les dossiers et les fichiers dans un fichier batch ?

Voici ma situation. Un projet a pour objectif de migrer certaines pièces jointes vers un autre système.

Ces pièces jointes seront situées dans un dossier parent, disons " Dossier 0 " (voir le diagramme de cette question pour une meilleure compréhension), et elles seront zippées/compressées.

Je veux que mon script batch soit appelé comme ceci :

J'utilise 7za.exe comme outil d'extraction de ligne de commande.

Ce que je veux que mon script batch fasse, c'est d'itérer dans les sous-dossiers du " Dossier 0 " et d'extraire tous les fichiers ZIP contenant dans leur dossier respectif.

Il est obligatoire que les fichiers extraits soient dans le même dossier que leurs fichiers ZIP respectifs. Ainsi, les fichiers contenus dans " File 1.zip " sont nécessaires dans " Folder 1 " et ainsi de suite.

Je suppose que j'aurais également besoin de changer le répertoire réel avant d'appeler 7za.exe e %zippedFile pour l'extraction de fichiers, mais je ne peux pas comprendre comment dans ce fichier batch (grâce à je sais comment en ligne de commande, et même si je sais c'est la même instruction "cd").

Les réponses ci-dessous sont toutes deux proches de ce dont j'ai besoin. Mais pour des raisons inconnues, parfois le fichier batch, lorsque je donne un paramètre, ne fait rien et me ramène à l'invite.

Je n'ai pas écrit de fichier batch depuis environ 15 ans, j'ai donc complètement oublié la logique derrière, etc.

Il semble, sans aucune certitude, que le script du fichier batch ne puisse pas gérer les noms de dossier avec un espace. L'un de vous peut-il confirmer et proposer une solution pour contrer cela s'il vous plaît ?

Je deviens complètement aveugle ici. Merci pour ton aide! =)

J'ai besoin que la solution soit entièrement récursive car je ne connais pas la structure de répertoires contre laquelle cela sera utilisé. Désolé de ne pas l'avoir mentionné avant.

J'ai été inspiré par toutes vos réponses et d'autres pour trouver ce qui suit (qui fonctionne à 98%):

Le seul problème que j'ai est qu'il veut créer, pour s'en tenir à mon exemple, le sous-dossier File5 afin d'extraire le fichier zip dans. Ce n'est pas un problème lors de l'extraction du fichier File5.zip réel. Mais lorsqu'il creuse plus profondément dans la structure des répertoires jusqu'aux sous-dossiers, puisqu'il a obtenu le dernier nom de fichier File5, il veut créer le sous-dossier File5 dans le dossier 1dossier A , par exemple, pour extraire File1.zip . Voici un exemple de structure :

Ainsi, compte tenu de la structure illustrée ci-dessus, il souhaite créer File5 dans le dossier A , alors qu'il devrait plutôt avoir l'intention de créer File1.

Merci pour votre soutien et votre aide ! =)

L'aide de n'importe qui est appréciée avec reconnaissance.

J'ai accepté la réponse de @Dennis Williamson car sa solution répond à ce que j'ai demandé en premier lieu. Sinon, si vous recherchez une solution entièrement récursive, veuillez suivre le lien fourni dans ma propre réponse, qui vous mènera au site Web de StackOverflow.


Si vous souhaitez regrouper cela pour d'autres fichiers image, vous pouvez utiliser imagemagick pour supprimer les données exif en utilisant :

supprimez l'image de tout profil, commentaire ou ces morceaux PNG : bKGD,cHRM,EXIF,gAMA,iCCP,iTXt,sRGB,tEXt,zCCP,zTXt,date.

Si vos images sont destinées à un usage Web ou numérique (je veux dire RVB 72 dpi), vous pouvez utiliser Photoshop "enregistrer pour le Web" avec l'option "Métadonnées : aucune". Il produira une image simple sans aucune donnée ajoutée (c'est pour optimiser la taille).

Vous pouvez faire un lot et enregistrer ainsi des milliers d'images automatiquement.

Cela ne fonctionnera pas si vous avez besoin de CMJN ou d'images plus grandes qu'une certaine taille ("enregistrer pour le Web" fonctionnera toujours pour des images jusqu'à 5000x5000 pixels), à moins que vous ne fassiez un deuxième lot pour réenregistrer en CMJN 300 dpi ou autre vous avez besoin. Mais ce n'est pas recommandé.


1 réponse 1

Je réponds à ma propre question, puisque j'ai trouvé une solution.

Sur la base de la suggestion de Scott (dans un commentaire à la question) d'utiliser des scripts, j'ai trouvé un script qui permet d'exporter chaque couche en tant qu'image raster. Le script, appelé "Batch Export Unlocked Layers" est écrit par John Wundes. Le script fait des centaines de lignes et est trop long pour être publié ici, mais je vais créer un lien vers le téléchargement ici (le site principal est www.wundes.com, en cas de pourriture future des liens).

  • Téléchargez le script et enregistrez-le.
  • Ouvrir à partir d'Illustrator : Fichier > Scripts > Autre script > localiser le fichier et Ouvrir.
  • Une boîte de dialogue générée à partir du script s'ouvrira et vous permettra de spécifier la taille, le format de fichier et le répertoire de destination, ainsi que le nom du fichier en fonction du nom de la couche. Tous les calques déverrouillés et visibles seront exportés.
  • Cliquez sur démarrer.

Je l'ai testé dans Illustrator CS4 et il a exporté 300 calques en moins d'une minute.


Voir la vidéo: Steampunk Mask Darth Vaderr Samurai - 0106M0002 (Octobre 2021).