hoe krijg je de naam, path van een geselecteerde file in een folder (Explorer Window)

Status
Niet open voor verdere reacties.

APIcoder

Gebruiker
Lid geworden
3 mei 2011
Berichten
14
Is het mogelijk om in VB de file properties (of van meerdere files de properties) op te vragen die geselecteerd is/zijn in een Explorer Window.

Blijkbaar is dat niet voor de hand liggend.
Is het mogelijk is VB of C#

Zoeken op het net geeft alleen maar verwarring.

Anna
 
Dan zal je even moeten kijken naar een OpenFileDialog.

Klein voorbeeldje:

PHP:
Dim ofdBrian As New OpenFileDialog
If ofdBrian.ShowDialog() = DialogResult.OK Then
Dim Bestanden() As String = ofdBrian.FileNames
//In Bestanden staan alle paden naar de geselecteerde bestanden.
End If
 
Bedankt voor jullie reactie, ik zal proberen uit te leggen wat de bedoeling is.

De reden dat ik de properties van de geselecteerde bestanden (in een explorer window) wil
verkrijgen is: de geselecteerde bestanden een andere bestandsnaam en andere extensie
moeten krijgen. Zodat de bestanden gearchiveerd kunnen worden.

De bestanden die een nieuwe naam krijgen zijn outlook files (gekopieerd uit Outlook naar een
specifieke folder op HD, via drag-copy) de bestanden hebben de extensie .msg.

(-> Script Check uitvoeren of file naam wel de juiste extensie bezit.)

-----

Oorspronkelijk was (is) het plan om de bepaalde mail items (/berichten en attachment) in Outlook
te selecteren, vervolgens in Excel een macro opdracht geven om de geselecteerde mailtjes te
kopiëren naar een specifieke folder op de HD, de folder is persoon gerelateerd.

De gekopieerde mailtjes krijgen de juiste code zodat de mails later kunnen worden gearchiveerd.



Een kennis van mij heeft RSI en vroeg daarom aan mij of het niet mogelijk is om herhalende stappen
te automatiseren. Ik heb programmeer ervaring maar dat is Mac georiënteerd en omdat ik op de Mac
geen probleem heb om deze stappen te scripten denk ik dat in VB dat ook te doen moet zijn
(met wat hulp van jullie :o. ) Ik heb 6 jaar geleden met VB6 voor Indesign geprogrammeerd,
maar de benodigde kennis is blijkbaar diep gezakt. De oude VB boeken en de pas aangeschafte
Mastering VBA for Microsoft Office 2010, PowerShell VBScript and JScript Bible liggen klaar.


--- Werkwijze van mijn kennis---
Hij werkt in Excel, waar hij de persoonsmappen via een hyperlink kan openen, als er voor een
bepaald persoon mailtjes moeten worden gekopieerd wil hij in Outlook de juiste mails (+ attachments)
selecteren. In Excel runt hij een Macro, die de mailtjes uit Outlook kopieeren naar de juiste
persoonsmap (Excel bezit in een cell het path naar de persoonsfolder).

( Oja De Macro in Excel runt een Outlook object )

Advies is welkom,

Oeps best wel een verhaal
 
Laatst bewerkt:
Als het om archiveren gaat kan je een simpel executable die startup arguments opvangt plaatsen in het mapje SendTo.
Zo kan je via Rechtermuis > Sendto > Archive je handelingen op de geselecteerde bestanden verrichten.

Is dit wat je in gedachten hebt?
 
Dank jullie voor de reacties,


The Mighty Atom dat is al een heel verhaal, ik ga dat doorlezen.

aelatik, sorry het is mij niet geheel duidelijk wat je probeer uit te leggen.
maar de geselecteerde mailtjes worden gekopieerd naar een folder op de HD, dus buiten Outlook
(en de mappen structuur van Outlook), of bedoel je iets anders.


De folders waarin de mailtjes worden gekopieerd zijn persoonsgebonden, een persoonsgebonden folder
is via één klik op een Excel-hyperlink te openen. In Excel zitten misschien wel 100 personen onder
de hyperlinken. (Excel bevat dus een groot deel van de intelligentie, eigenlijk zo ik het liefst alles vanuit
Excel aansturen).

De mail van een bepaald persoon is zo makkelijk vanuit Outlook te slepen naar de geopende folder.
Echter het slepen zou ik i.v.m. zijn RSI willen voorkomen.



Ik moet oppassen dat het verhaal onduidelijk wordt, de oorspronkelijke vraag is kan ik via scripting
de properties van geselecteerde bestanden in een explorer window (folder op HD) opvragen en
vervolgens deze geselecteerde bestanden een nieuwe naam en extensie geven. Zeg ik dat zo goed?,
anders graag verbeteren.

Ik bedoel met explorer window niet de OpenFileDialog :o


De ideale oplossing is om de berichten ik Outlook te selecteren en via een Excel macro (outlook object)
de mailtjes naar de juiste persoonsgebonden folder op de HD te kopiëren, de bestandsnaam +
extensie meteen omzetten.


Hopelijk wordt het niet te onduidelijk, ik ben blij met alle hulp en leer er gelijk van.
 
Laatst bewerkt:
"Ik moet oppassen dat het verhaal onduidelijk wordt, de oorspronkelijke vraag is kan ik via scripting
de properties van geselecteerde (dit stuk is me onduidelijk, wil je weten wat er onder je selectie binnen explorer zit?) bestanden in een explorer window (folder op HD) opvragen en
vervolgens deze geselecteerde bestanden een nieuwe naam en extensie geven. Zeg ik dat zo goed?,
anders graag verbeteren."

File properties opvragen en renamen van extensies of kopieren/verplaatsen van bestanden is geen enkele issue.
Wat ik wil weten is of je dmv een applicatie in explorer wilt snuffelen. Want in dat geval moeten we in C en BHO (browser helper objects ) objecten denken.

Of bedoel je met selectie ( een vooraf gedefineerd lijst ) of een gebruiker die een selectie maak en vervolgens iets aanroept?
 
Dank voor je geduld.

Ik open via start een windows verkenner, selecteer een map in het navigatievenster,
vervolgens selecteer ik in de bestandslijst de files die ik wil ReNamen (oFSO.MoveFile ...., ....)
 
Ik ga dit maar per oplossing proberen. Ik heb een bestand genaamd CAP.EXE in de bijlagen gezet. Dit bestand is een console applicatie die doorgegeven argumenten inleest. Code is alsvolgt en het is C# :

Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace cap
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach (string x in args)
            {
                Console.WriteLine(x);
            }
            Console.WriteLine("Druk op een toets om af te sluiten");
            Console.Read();
        }
    }
}

Je begrijpt dat je in dit applicatie in principe alles in kunt programmeren. Van dit programma moet je een shortcut maken in de SendTo folder van Windows. Je kan de SendTo folder openen dmv. Start > Run > shell:sendto
Daarin moet je een shortcut maken. Vervolgens kan je in explorer je selectie dmv rechtermuiskop verzenden naar de applicatie in kwestie die op zijn beurt de boel afhandelt. Dat ziet er dan zo uit :

attachment.php


capsample.jpg
Bekijk bijlage cap.zip
 
Laatst bewerkt:
Hallo aelatik,


Dit ziet er interessant uit, ik ben eigenlijk bang dat
a) dit te moeilijk wordt om te integreren en
b) dat het ook boven mijn pet gaat.

Vooral zie ik niet hoe deze app weet welke directory gebruikt moet worden om de mails naar te kopiëren, de intelligentie zit in Excel, in Excel wordt bij elke persoon zijn directory reference (éénmalig) ingevoerd.

Ik kies er nu maar voor om de gebruiker we de Mails te laten slepen naar de juiste directory en dat van uit Excel een macro wordt gestart die in die directory de files filter op .msg. De bestandsnamen van de gevonden files krijgen de juiste code.


aelatik ik waardeer je inzet echt :) en ik hoop dat ik toch nog een beroep op je kennis mag doen. Vandaag ga ik proberen de oplossing te maken dus ik heb vast nog een vraag.

gr. An
 
Mijn excuses voor het 'hijacken' van je topic, maar zou zoiets ook werken met een Windows Forms app, want een WinForms project zou ook argumenten kunnen uitlezen.
 
The Mighty Atom

Hoe zie je dat, hoe kan je dan de argumenten uitlezen.
 
Dat kan met Environment.GetCommandLineArgs.
Alleen ik heb daar wat problemen mee. Zelfs op CodeProject heb ik nog geen reactie gekregen terwijl daar zat knappe koppen zitten. Is het dan echt zo moeilijk, vraag ik me dan af.
 
Soms denken wij zó anders, buiten de geijkte paden, dat een vraag niet juist wordt geïnterpreteerd.


Ondertussen maak ik het projectje in VBA Excel, het uitlezen van de persoonsmap-path in Excel lukt al.
Nu de files in een directory opvragen (een filter voor exstensie .msg meegeven).
 
Hoe kan ik vanuit Excel met VBA de files met extensie .msg uit directory "c:\FolderName" lezen.
 
Je vraag wordt steeds simpeler :-)

Code:
        Dim sourcefile As Variant
        sourcefile = Dir("c:\FolderName\*.msg")
        While sourcefile <> ""
            Debug.Print sourcefile
            'Om te renamen en/of moven doe ke
            'Dim targetfile As String
            'Name sourcefile As targetfile
            sourcefile = Dir()
        Wend
 
Dat kan met Environment.GetCommandLineArgs.
Alleen ik heb daar wat problemen mee. Zelfs op CodeProject heb ik nog geen reactie gekregen terwijl daar zat knappe koppen zitten. Is het dan echt zo moeilijk, vraag ik me dan af.


Met volledige code ( C# )

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            string[] args = Environment.GetCommandLineArgs();
            for (int i=1;i<args.Length;i++) {
                MessageBox.Show(args[i].ToString());
            }
        }
    }
}
 
Echt vreemd, ik krijg altijd maar 1 arg gereturned, ondanks dat ik meerdere bestanden heb geselecteerd.

Ik maak trouwens gebruik van het Explorer ContextMenu, mijn command ziet er zo uit in het Register:

HKEY_CLASSES_ROOT\.bsp\shell\Install Binary Space Partition File(s)...\command
De waarde van command is:
"C:\Users\Atom\Documents\Visual Studio 2010\Projects\ExplorerContextMenu Test\bin\Debug\ExplorerContextMenu Test.EXE" %1

Het programma bevat een listbox waarin ik de full paths van de geselecteerde files wil hebben.
Bekijk anders mn andere topic eens zodat je weet ik probeer te bereiken:
http://www.helpmij.nl/forum/showthread.php/623005-Windows-Explorer-ContextMenu
 
aelatik bedankt voor je codes. daar kan ik wat mee.;)


Morgen ga ik aan de slag, als ik nu nog aan de gang ga dan is het zo weer 3 uur.

Ondertussen begrijp ik dat de code Application.FileSearch niet meer wordt ondersteund en dat Dir()
of CreateObject("Scripting.FileSystemObject") de juiste weg is.


aelatik, Dat klopt telkens simpeler; eerst op deze manier het scriptje maken, met deze oplossing is hij alvast geholpen,
RSI is niet fijn ik weet daarvan.

Op kort termijn is het toch wel de bedoeling om het zo te scripten dat de mailtjes niet meer met drag drop gekopieerd worden,
maar via scripting in de juiste directory worden geplaatst. (Drag drop is ook belastend.)


Thanks
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan