J'essaie d'écrire un script pour ouvrir un dossier où le nom du dossier contient à mi-chemin dans le nom un identifiant unique.
Le dossier est un sous-dossier d'un dossier qui est défini par l'utilisateur avec l'identifiant unique dans une boîte de dialogue.
::résultat = dialogue (
v liste ( "Année 20XX", année=Modifier le texte ( "17", largeur ( 100 ))) ,
v liste ( "Identifiant", iden=Modifier le texte ( "AA1211", largeur ( 100 )))
) ;
Le nom de tous les sous-dossiers a la même structure ABC-année-iden-xxxx bbb ddddd FFF.
ABC est fixe. year et iden sont sélectionnés par l'utilisateur mais xbd F sont des variables.
J'ai essayé d'obtenir le nom de fichier avec pick file mais cela ne fonctionne pas car le dernier bit est variable.
Nom du dossier = Choisir le fichier ( "\\Sélectionner dossier","C:\Users\20"||::résultat [ "an" ] ||"\"||"ABC-"||::résultat [ "an" ] ||"-"||::résultat [ "iden" ] ||"-*" ) ;
Une autre option consiste à lire les noms des sous-dossiers dans le dossier principal et à essayer de les faire correspondre, mais je ne peux pas le comprendre avec regex.
files = Fichiers dans le répertoire ( "C:\Utilisateurs\20"||::résultat [ "an" ] ) ;
L'idée est qu'une fois que j'ai ce nom de chemin de dossier, ouvrez un fichier dans ce dossier avec le même nom que le sous-dossier. Pour cela, j'ai le script mais je cherche juste un moyen d'identifier le chemin du sous-dossier et le nom du fichier.
Est-ce que quelqu'un peut m'aider?
Merci,
CS
Peut-être utiliser Pick Directory() ou vous pouvez le déclarer à l'avance et utiliser ce qui suit
RootFolder = "C:/" ; // or Pick Directory()
Year = 2005 ;
SearchTerm = RootFolder || Char(Year) ;
Merci beaucoup. Je vois maintenant comment j'obtiens le nom mais comment puis-je obtenir le chemin du dossier?
@SC1 ,
RootFolder = "C:\"; // Please fill in your desired folder location
FileList = Files In Directory(RootFolder); // Extract list of all files
DesList = list(); // Declare empty list
UserInput = 2005 ;
for(i = 1, i <= N Items(FileList), i++,
If(!IsMissing(Regex(Char(FileList[i]),Concat(Char(UserInput),"-","ABC|FFF")),
Insert Into(DesList,FileList[i]);
);
);
// This will be able to capture all files which are of the format 2005-ABC or 2005-FFF . You can expand on the or clause based on your need