J'ai cherché une solution à ce problème et j'ai trouvé des moyens sympas de le faire en utilisant la ligne de commande. Cependant, j'aimerais utiliser AppleScript afin de pouvoir l'incorporer dans d'autres scripts par la suite. Je dois "fusionner" tous les fichiers .CSV d'un dossier en un seul fichier .CSV. Le dossier contiendra environ 10 fichiers (le nombre varie chaque jour), chacun contenant quelques centaines d'enregistrements. Les en-têtes sont les mêmes pour chaque fichier, je dois donc conserver le premier en-tête et supprimer l'en-tête de tous les autres. En fin de compte, j'aimerais que le fichier de sortie se trouve dans le même dossier et qu'il porte le même nom que le premier fichier, avec une légère modification comme suit. Les noms de fichiers actuels ressemblent à ceci : IC-Nom de l'école YYYY-YBPoseExport.CSV J'aimerais remplacer le nom de l'école par quelque chose comme "Combiné" Je suis novice en la matière et ne sais pas par où commencer. Toute aide serait grandement appréciée.
Réponse
Trop de publicités?to mergeCSVFiles at path as «class furl»
local path, tmp
set (path) to path as text
get the path & "newfile.tmp"
set tmp to the result's POSIX path
close access (open for access tmp)
set eof of tmp to 0
set my text item delimiters to {linefeed, "IC-", space}
tell application id "com.apple.SystemEvents"
tell (the folder path's files whose name extension = "csv")
get the first file's POSIX path
read the result using delimiter linefeed
write "" & result & linefeed to tmp as "utf8"
repeat with f in rest of (get POSIX path of files)
read f using delimiter linefeed
write (rest of result as text) & linefeed ¬
to tmp as "utf8" starting at eof
end repeat
set suffix to the last text item of (get some file's name)
end tell
set ICCombined to "IC-Combined" & space & the suffix
set the name of file tmp to ICCombined
get the path of file ICCombined in the folder path
end tell
tell application id "com.apple.finder" to activate (reveal the result)
end mergeCSVFiles
Ce gestionnaire peut recevoir un chemin d'accès absolu (complet) au dossier contenant le fichier .csv
les fichiers à fusionner. Au départ, un fichier vierge est créé sous le nom de "newfile.tmp"
dans lequel le contenu intégral de la première .csv
est écrit. Les autres .csv
Les fichiers sont lus dans leur intégralité et ajoutés au fichier "newfile.tmp"
à l'exception de leurs premières lignes (leurs en-têtes).
Une fois la fusion terminée, "newfile.tmp"
est renommé en "IC-Combined <suffix>.csv"
où <suffix>
est obtenu à partir de l'un des autres .csv
Les noms de fichiers sont considérés comme étant tout ce qui apparaît après le premier caractère espace, mais sans l'inclure. Si le nom de votre fichier d'exemple inclut le suffixe littéral, le fichier résultant s'appellera "IC-Combined YYYY-YBPoseExport.CSV"
(bien qu'il soit préférable de conserver les minuscules dans les extensions de fichiers, car cela peut poser des problèmes dans les applications (y compris l'interpréteur de commandes) qui énumèrent les fichiers et effectuent des recherches sur les noms de fichiers en tenant compte de la casse, ce qui est la norme sur les systèmes de type UNIX).
Enfin, le fichier est révélé dans Recherche qui coïncidera avec son changement de nom.
Pour invoquer le gestionnaire, voici un exemple :
mergeCSVFiles at "/Users/CK/Documents/Some Folder"
Il ne renvoie aucune valeur.