2 votes

Comment obtenir les noms de fichiers dans un dossier spécifique et concaténer le nom du fichier avec certains caractères ?

J'essaie d'écrire un fichier batch script qui va créer un fichier .sql et écrire le contenu que je veux, voici la logique que j'essaie, Nous devons consolider tous les script .sql pour chaque pays et créer un fichier .sql maître qui appellera tous les autres fichiers .sql, nous fournirons ces fichiers à notre équipe DBA, ils exécuteront les fichiers maîtres au lieu d'exécuter les fichiers individuels,

J'ai créé le script qui va créer le fichier .sql et quelques commandes de base avec les commandes @echo aussi je suis capable de lister les fichiers dans un dossier spécifique mais je ne suis pas capable de faire une boucle pour concaténer les noms de fichiers avec quelques caractères en préfixe et suffixe.

Voici le code que j'ai essayé

    @echo off
        break>"C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708\dblank.sql"

    cd C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708

    @echo Set scan off;>>dblank.sql
    @echo alter session set current_schema="SV2AUPR";>>dblank.sql

    rem dir /b "C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708\" >>dblank.sql

Je voudrais que la sortie soit de la manière suivante

Set scan off;
alter session set current_schema="SV2AUPR";

@@BLUE-CR616-APPLICATION_NO_CHANGE.sql;
SHOW ERROR;

@@CR_deployment_script.sql;
SHOW ERROR;

@@Addroledetails.sql;
SHOW ERROR;

@@SV2_IBIS_MOVE_DATA_PR_ALL_DB.sql;
SHOW ERROR;

Je veux ajouter '@@' devant le nom du fichier et ';' à la fin du nom du fichier. Quelqu'un peut-il m'aider ?

1voto

Magoo Points 22274
(
@for /f "delims=" %%a in ('dir /a-d /b "C:\Gopi_Kishan\DBBR\Daily_attachments\ausqascript_20190708\*.sql"') do @echo @@%%a;&@echo show_error;
)>>dblank.sql

devrait faire ce que vous semblez demander. Les parenthèses entourant le for permettent à la sortie d'être redirigée par la commande >> (ajouter au fichier).

Pour ... *.sql (chaque .sql ) obtenir son nom sous forme de base pour %%a . /a-d signifie qu'aucun nom de répertoire ne correspond. Ensuite, echo celui-ci avec son préfixe et son suffixe, suivi de l'adresse de l'utilisateur. show_error; ligne ; redirigé pour être ajouté au fichier.

Notez que le @ précédant chaque commande batch n'est pas rrequis si vous exécutez @echo off comme il est normal au début du script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X