cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Fuji98
Frequent Visitor

Extract exif data from image with Power Automate Desktop

Hello, I want to extract extract exif data (ISO, Keywords, shutter speed, Date taken, software, etc.) from a JPG that is stored on my PC. I already used the "Get Files from Folder", but that just provides the general properties data. I want to get the details in properties, which contain the exif data. Any ideas? Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions

For individual image file and specific records copy paste the below code into a blank Flow editor.

Change the file path in the Set variable (first line).

Run the Flow to see the output.

SET FullFilePath TO $'''D:\\Test\\P1000231.JPG'''
File.GetPathPart File: FullFilePath Directory=> Directory FileName=> FileName
Scripting.RunVBScript VBScriptCode: $'''Dim oAppShell, oFolder, output,i
    
    Set objFso = CreateObject(\"Scripting.FileSystemObject\")
    Set oAppShell = CreateObject(\"Shell.Application\")
    
    varFolderPath = \"%Directory%\"
    Set oFolder = oAppShell.Namespace(varFolderPath)
    
    
    File = \"%FileName%\"
    output = oFolder.GetDetailsOf(oFolder.items.Item(File),0) & \"|\"
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),1)  & \"|\"   
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),30) & \"|\"   
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),32)  
   
   WScript.Echo output''' ScriptOutput=> VBScriptOutput
Text.SplitText.SplitWithDelimiter Text: VBScriptOutput CustomDelimiter: $'''|''' IsRegEx: False Result=> TextList
Display.ShowMessageDialog.ShowMessage Message: $'''The camera model is: %TextList[2]%''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed

 

The yellow highlighted are the ones where you give the numbers.

Example of 4 different numbers. Add the ones you need and remove others.

Note that the pipe | symbol is not appended to the last one in line no. 14. (use of pipe explained below)

 

VJR_0-1669867250805.png

 

 

The idea is to produce a text output variable separated by a pipe | delimiter.

VJR_1-1669867335081.png

 

And then split using the delimiter. This will give a List variable for each of those numbers

VJR_2-1669867383458.png

Access the individual elements using the notation for instance as %TextList[2]% 

 

VJR_3-1669867472950.png

 

 

(You can even create a customised vbscript function where you just pass the image path and only a single number from PAD and it will return the value of that number. This function can then be called again and again for different numbers in each call.)

View solution in original post

8 REPLIES 8
VJR
Multi Super User
Multi Super User

Hi @Fuji98 

These details will have to be retrieved by an external scripting program like vbs, powershell, python or any other.

Here is one in Vbscript.

 

Set the folder path as you would like to. 

VJR_0-1669805187054.png

 

On running the script, the output variable will have all the metadata details of the image.

The ones that are blank are absent for my image.

VJR_1-1669805306015.png

 

There are 321 metadata properties that will be retrieved.

You can choose the ones you want by adding an If condition within the vbscript using the below numbers.

 

  0 Name
  1 Size
  2 Item type
  3 Date modified
  4 Date created
  5 Date accessed
  6 Attributes
  7 Offline status
  8 Availability
  9 Perceived type
 10 Owner
 11 Kind
 12 Date taken
 13 Contributing artists
 14 Album
 15 Year
 16 Genre
 17 Conductors
 18 Tags
 19 Rating
 20 Authors
 21 Title
 22 Subject
 23 Categories
 24 Comments
 25 Copyright
 26 #
 27 Length
 28 Bit rate
 29 Protected
 30 Camera model
 31 Dimensions
 32 Camera maker
 33 Company
 34 File description
 35 Masters keywords
 36 Masters keywords
 42 Program name
 43 Duration
 44 Is online
 45 Is recurring
 46 Location
 47 Optional attendee addresses
 48 Optional attendees
 49 Organizer address
 50 Organizer name
 51 Reminder time
 52 Required attendee addresses
 53 Required attendees
 54 Resources
 55 Meeting status
 56 Free/busy status
 57 Total size
 58 Account name
 60 Task status
 61 Computer
 62 Anniversary
 63 Assistant's name
 64 Assistant's phone
 65 Birthday
 66 Business address
 67 Business city
 68 Business country/region
 69 Business P.O. box
 70 Business postal code
 71 Business state or province
 72 Business street
 73 Business fax
 74 Business home page
 75 Business phone
 76 Callback number
 77 Car phone
 78 Children
 79 Company main phone
 80 Department
 81 E-mail address
 82 E-mail2
 83 E-mail3
 84 E-mail list
 85 E-mail display name
 86 File as
 87 First name
 88 Full name
 89 Gender
 90 Given name
 91 Hobbies
 92 Home address
 93 Home city
 94 Home country/region
 95 Home P.O. box
 96 Home postal code
 97 Home state or province
 98 Home street
 99 Home fax
100 Home phone
101 IM addresses
102 Initials
103 Job title
104 Label
105 Last name
106 Mailing address
107 Middle name
108 Cell phone
109 Nickname
110 Office location
111 Other address
112 Other city
113 Other country/region
114 Other P.O. box
115 Other postal code
116 Other state or province
117 Other street
118 Pager
119 Personal title
120 City
121 Country/region
122 P.O. box
123 Postal code
124 State or province
125 Street
126 Primary e-mail
127 Primary phone
128 Profession
129 Spouse/Partner
130 Suffix
131 TTY/TTD phone
132 Telex
133 Webpage
134 Content status
135 Content type
136 Date acquired
137 Date archived
138 Date completed
139 Device category
140 Connected
141 Discovery method
142 Friendly name
143 Local computer
144 Manufacturer
145 Model
146 Paired
147 Classification
148 Status
149 Status
150 Client ID
151 Contributors
152 Content created
153 Last printed
154 Date last saved
155 Division
156 Document ID
157 Pages
158 Slides
159 Total editing time
160 Word count
161 Due date
162 End date
163 File count
164 File extension
165 Filename
166 File version
167 Flag color
168 Flag status
169 Space free
172 Group
173 Sharing type
174 Bit depth
175 Horizontal resolution
176 Width
177 Vertical resolution
178 Height
179 Importance
180 Is attachment
181 Is deleted
182 Encryption status
183 Has flag
184 Is completed
185 Incomplete
186 Read status
187 Shared
188 Creators
189 Date
190 Folder name
191 Folder path
192 Folder
193 Participants
194 Path
195 By location
196 Type
197 Contact names
198 Entry type
199 Language
200 Date visited
201 Description
202 Link status
203 Link target
204 URL
208 Media created
209 Date released
210 Encoded by
211 Episode number
212 Producers
213 Publisher
214 Season number
215 Subtitle
216 User web URL
217 Writers
219 Attachments
220 Bcc addresses
221 Bcc
222 Cc addresses
223 Cc
224 Conversation ID
225 Date received
226 Date sent
227 From addresses
228 From
229 Has attachments
230 Sender address
231 Sender name
232 Store
233 To addresses
234 To do title
235 To
236 Mileage
237 Album artist
238 Sort album artist
239 Album ID
240 Sort album
241 Sort contributing artists
242 Beats-per-minute
243 Composers
244 Sort composer
245 Disc
246 Initial key
247 Part of a compilation
248 Mood
249 Part of set
250 Period
251 Color
252 Parental rating
253 Parental rating reason
254 Space used
255 EXIF version
256 Event
257 Exposure bias
258 Exposure program
259 Exposure time
260 F-stop
261 Flash mode
262 Focal length
263 35mm focal length
264 ISO speed
265 Lens maker
266 Lens model
267 Light source
268 Max aperture
269 Metering mode
270 Orientation
271 People
272 Program mode
273 Saturation
274 Subject distance
275 White balance
276 Priority
277 Project
278 Channel number
279 Episode name
280 Closed captioning
281 Rerun
282 SAP
283 Broadcast date
284 Program description
285 Recording time
286 Station call sign
287 Station name
288 Summary
289 Snippets
290 Auto summary
291 Relevance
292 File ownership
293 Sensitivity
294 Shared with
295 Sharing status
297 Product name
298 Product version
299 Support link
300 Source
301 Start date
302 Sharing
303 Availability status
304 Status
305 Billing information
306 Complete
307 Task owner
308 Sort title
309 Total file size
310 Legal trademarks
311 Video compression
312 Directors
313 Data rate
314 Frame height
315 Frame rate
316 Frame width
317 Spherical
318 Stereo
319 Video orientation
320 Total bitrate

 

Run Vbscript action:

Dim oAppShell, oFolder, output,i
    
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set oAppShell = CreateObject("Shell.Application")
    
    varFolderPath = "%FolderPath%"
    Set oFolder = oAppShell.Namespace(varFolderPath)
    
    For Each oItem In oFolder.Items    
       For i = 0 To 320
            output = output & oFolder.GetDetailsOf(, i) & " - " & oFolder.GetDetailsOf(oItem, i) & vbNewLine
       Next 
       output = output & "------------------------------" & vbNewLine
   Next
   
   WScript.Echo output

 

 

 

@VJR This was excatly what I was looking for and it works fine! Thank you SO much for this! 

Two more questions:

Is there also a way to get not a whole folder but just a specific file inside the folder?

And how can I choose which exact metadata properties I want? For example if I want just 1 and 72.. how I'm gonna do that? Sorry, I've never done anything in VBScript, dont know what to do with the "If" Condition. Thanks!

For individual image file and specific records copy paste the below code into a blank Flow editor.

Change the file path in the Set variable (first line).

Run the Flow to see the output.

SET FullFilePath TO $'''D:\\Test\\P1000231.JPG'''
File.GetPathPart File: FullFilePath Directory=> Directory FileName=> FileName
Scripting.RunVBScript VBScriptCode: $'''Dim oAppShell, oFolder, output,i
    
    Set objFso = CreateObject(\"Scripting.FileSystemObject\")
    Set oAppShell = CreateObject(\"Shell.Application\")
    
    varFolderPath = \"%Directory%\"
    Set oFolder = oAppShell.Namespace(varFolderPath)
    
    
    File = \"%FileName%\"
    output = oFolder.GetDetailsOf(oFolder.items.Item(File),0) & \"|\"
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),1)  & \"|\"   
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),30) & \"|\"   
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),32)  
   
   WScript.Echo output''' ScriptOutput=> VBScriptOutput
Text.SplitText.SplitWithDelimiter Text: VBScriptOutput CustomDelimiter: $'''|''' IsRegEx: False Result=> TextList
Display.ShowMessageDialog.ShowMessage Message: $'''The camera model is: %TextList[2]%''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed

 

The yellow highlighted are the ones where you give the numbers.

Example of 4 different numbers. Add the ones you need and remove others.

Note that the pipe | symbol is not appended to the last one in line no. 14. (use of pipe explained below)

 

VJR_0-1669867250805.png

 

 

The idea is to produce a text output variable separated by a pipe | delimiter.

VJR_1-1669867335081.png

 

And then split using the delimiter. This will give a List variable for each of those numbers

VJR_2-1669867383458.png

Access the individual elements using the notation for instance as %TextList[2]% 

 

VJR_3-1669867472950.png

 

 

(You can even create a customised vbscript function where you just pass the image path and only a single number from PAD and it will return the value of that number. This function can then be called again and again for different numbers in each call.)

Fuji98
Frequent Visitor

@VJR This works just perfect. Excatly what I wanted. Thank you so much for this, I'm really thankful. 😊

 

Btw: How I'm gonna select now just specific data like:

    File = \"%FileName%\"
    output = oFolder.GetDetailsOf(oFolder.items.Item(File),0) & \"|\"
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),1)  & \"|\"   
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),30) & \"|\"   
    output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),32)  

 in the first script that pulls data for EVERY file in the folder? I tried to merge these scripts together so that it will pull just specific metadata out ot every file in the folder but I can't get this to work. As I said, I have really no idea of VBscript. I would be so glad if you can help out, one more time. Thanks

You wanted for specific file so I had shared that.

 

In the first script, remove as below, keep all else as it is.

 

For Each oItem In oFolder.Items

For i = 0 To 320
output = output & oFolder.GetDetailsOf(, i) & " - " & oFolder.GetDetailsOf(oItem, i) & vbNewLine

 

 

output = oFolder.GetDetailsOf(oFolder.items.Item(File),0) & \"|\"
output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),1) & \"|\"
output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),30) & \"|\"
output = output & oFolder.GetDetailsOf(oFolder.items.Item(File),32)


Next


output = output & "------------------------------" & vbNewLine
Next

 

I am directly making the code changes here, so haven't tested it.

Yes, I wanted it for specific file, that was absolutely right. Just wondered how it would look like for the whole folder. You've done an amazing job, thank you for this.

Matze7
Regular Visitor

Hi folks,

 

I experience something strange. This is my code:

Dim oAppShell, oFolder, output,i
    
    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set oAppShell = CreateObject("Shell.Application")
    
    varFolderPath = "%Directory%"
    Set oFolder = oAppShell.Namespace(varFolderPath)
    
    
    File = "%FileName%"

one = oFolder.GetDetailsOf(oFolder.items.Item(File),0) & "|"
two = oFolder.GetDetailsOf(oFolder.items.Item(File),1) & "|"
three = oFolder.GetDetailsOf(oFolder.items.Item(File),12)  & "|"
four  = oFolder.GetDetailsOf(oFolder.items.Item(File),4)

if three = "" then three = %dummy%

output= one & two & three & four & vbNewLine

   WScript.Echo output

and this is my VBScriptOutput:

Matze7_0-1700326899038.png

So far all looks fine, but when checking carefully this part:

20.<u+200e>12.<u+200e>2020 <u+200f><u+200e>11:07 (which is the date take of a photo, the length of this part is 20 char, but 16 are only visible! Try it, place the cursor to the left and move one by one and count. There is something invisible inside, which I cannot identify. Any idea or even a solution how to get rid of this?

 nbsp;.<u+200e>2020 <u

I experience this only with the 'date taken' value, not with the creation date:
23.01.2022 16:51

 

Many thanks!

Thank you for this VJR. This is exactly what I'm looking for right now. Great Job! 😊

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!    This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Community MembersNumber SolutionsSuper UsersNumber Solutions Deenuji 9 @NathanAlvares24  17 @Anil_g  7 @ManishSolanki  13 @eetuRobo  5 @David_MA  10 @VishnuReddy1997  5 @SpongYe  9JhonatanOB19932 (tie) @Nived_Nambiar  8 @maltie  2 (tie)   @PA-Noob  2 (tie)   @LukeMcG  2 (tie)   @tgut03  2 (tie)       Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 2: Community MembersSolutionsSuper UsersSolutionsPower Automate  @Deenuji  12@ManishSolanki 19 @Anil_g  10 @NathanAlvares24  17 @VishnuReddy1997  6 @Expiscornovus  10 @Tjan  5 @Nived_Nambiar  10 @eetuRobo  3 @SudeepGhatakNZ 8     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji32ManishSolanki55VishnuReddy199724NathanAlvares2444Anil_g22SudeepGhatakNZ40eetuRobo18Nived_Nambiar28Tjan8David_MA22   Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji11FLMike31Sayan11ManishSolanki16VishnuReddy199710creativeopinion14Akshansh-Sharma3SudeepGhatakNZ7claudiovc2CFernandes5 misc2Nived_Nambiar5 Usernametwice232rzaneti5 eetuRobo2   Anil_g2   SharonS2  

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (887)