IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Obtenir les cibles des raccourcis


Sujet :

Scripts/Batch

  1. #1
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2002
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 243
    Points : 200
    Points
    200
    Par défaut Obtenir les cibles des raccourcis
    Bonjour,

    J'ai un script qui parcourt tous les dossiers et les raccourcis contenus dans un emplacement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem -Path "." -force -recurse | Where-Object {$_.PSIsContainer -eq $true -or $_.Extension -eq ".lnk"} | Select-Object FullName|

    J'ai 2 questions distinctes:
    1. Comment obtenir une liste avec la cible pour chaque raccourci?
    ex: "MonDossierRaccourci.lnk" --> cible = "c:\blabla\Mon dossier\"
    2. Y aurait-il un moyen facile de distinguer des raccourcis de Dossier et des raccourcis de Fichier?

    Si nécessaire, je peux couper mon code en 2 parties:
    Un script qui liste tous les dossier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem -Path "." -force -recurse | Where-Object {$_.PSIsContainer -eq $true} | Select-Object FullName|
    Un autre qui liste les lnk et leur cible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem -Path "." -force -recurse | Where-Object {$_.Extension -eq ".lnk"} | Select-Object FullName|
    Merci d'avance pour aide

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut Raccourcis et leurs cibles

    Voici un exemple de script PowerShell qui affiche les Raccourcis et leurs cibles dans un Out-Gridview à partir de votre bureau
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $MyPath = "$Env:userprofile\desktop"
    Get-ChildItem -Path $MyPath -Force -Recurse |
        Where-Object { !$_.PSIsContainer -and $_.Extension -eq ".lnk" } |
        ForEach-Object {
            $shell = New-Object -ComObject WScript.Shell
            $link = $shell.CreateShortcut($_.FullName)
            [PSCustomObject]@{
                'Shortcut Name' = $_.Name
                'Target Path'   = $link.TargetPath
            }
        } | Out-GridView -Title "Raccourcis et leurs cibles"

  3. #3
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut Script PowerShell de Gestion des Raccourcis

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <#
    Description du Script PowerShell de Gestion des Raccourcis :
    Ce script PowerShell permet d'analyser et de gérer les raccourcis présents dans un répertoire spécifique, tel que le bureau de l'utilisateur et tous les utilisateurs aussi.
    Il affiche une interface utilisateur conviviale pour visualiser les différents types de raccourcis (dossiers, fichiers ou liens Internet) ainsi que leurs cibles.
     
    Fonctionnalités principales :
     
    1-Analyse Automatique        : Le script explore le répertoire spécifié pour repérer les fichiers de type raccourci (.lnk) et liens Internet (.url).
    2-Affichage dans une Grille : Une interface graphique est générée à l'aide de la commande Out-GridView, permettant à l'utilisateur de voir tous les raccourcis disponibles, leurs types et leurs cibles.
    3-Actions sur les Raccourcis : L'utilisateur peut sélectionner un raccourci dans la grille et effectuer des actions correspondantes :
        -Ouvrir un dossier cible dans l'explorateur de fichiers.
        -Exécuter un fichier cible.
        -Ouvrir un lien Internet dans le navigateur par défaut.
    4-Boucle de Répétition : Une boucle est intégrée pour permettre à l'utilisateur de parcourir plusieurs fois la liste des raccourcis sans avoir à redémarrer le script.
     
    Ce script offre une solution simple et efficace pour explorer et interagir avec les raccourcis présents dans un répertoire donné, ce qui peut être utile pour gérer les raccourcis sur le bureau ou dans d'autres emplacements système.
    #>
    function Afficher-Grille {
        param (
            [Parameter(Mandatory=$true)]
            [System.Collections.ArrayList]$listeRaccourcis
        )
        $selectedItem = $listeRaccourcis | Out-GridView -Title "Gestion de types de Raccourcis et leurs Cibles" -PassThru
        return $selectedItem
    }
     
    do {
        Clear-Host
        # Spécifiez le chemin du répertoire à examiner : exemple le bureau de l'utilisateur courant et aussi le bureau partagé
        $chemin = @([Environment]::GetFolderPath("CommonDesktopDirectory"),[Environment]::GetFolderPath("Desktop"))
        # Obtenez la liste de tous les fichiers dans le répertoire spécifié
        $fichiers = Get-ChildItem -Path $chemin -Recurse
     
        # Créez une liste pour stocker les informations sur les raccourcis
        $listeRaccourcis = @()
     
        # Parcourez chaque fichier pour identifier s'il s'agit d'un raccourci de dossier, de fichier, ou Internet
        foreach ($fichier in $fichiers) {
            # Vérifiez si le fichier est un raccourci ou un raccourci internet
            if ($fichier.Extension -eq ".lnk" -or $fichier.Extension -eq ".url") {
                # Utilisez la commande CreateShortcut pour accéder aux informations sur le raccourci
                $shell = New-Object -ComObject WScript.Shell
                $link = $shell.CreateShortcut($fichier.FullName)
     
                # Initialisez la variable pour stocker les arguments
                $arguments         = $link.Arguments
                # Initialisez la variable pour stocker les descriptions
                $Desciption       = $link.Description
                # Initialisez la variable pour stocker les dossiers de travail
                $WorkingDirectory = $link.WorkingDirectory
                # Initialisez la variable pour stocker les icons
                $Icon             = $link.IconLocation
                # Initialisez la variable pour stocker les touches de raccourci
                $HotKey           = $link.Hotkey
     
                # Vérifiez si le chemin de la cible est un dossier
                if (Test-Path $link.TargetPath -PathType Container) {
                    $type = 'Raccourci de dossier'
                } else {
                    # Vérifiez si le fichier est un raccourci internet
                    if ($fichier.Extension -eq ".url") {
                        $type = 'Raccourci Internet'
                    } else {
                        $type = 'Raccourci de fichier'
                    }
                }
     
                # Vérifiez s'il y a des arguments et concaténez-les avec le chemin de la cible
                if ($arguments -ne $null -and $arguments -ne '') {
                    $targetPath = "$($link.TargetPath) $arguments"
                } else {
                    $targetPath = "$($link.TargetPath)"
                }
     
                # Ajoutez les informations sur le raccourci à la liste
                $listeRaccourcis += [PSCustomObject]@{
                    'Type de Raccourci'    = $type
                    'Nom de Raccourci'     = $fichier.Name
                    'Chemin de la cible'   = $targetPath
                    'Dossier de Travail'   = $WorkingDirectory
                    'Arguments'            = $arguments
                    'Description'          = $Desciption
                    'Icon'                 = $Icon
                    'Touches de Raccourci' = $HotKey
                }
            }
        }
     
        # Affichez la liste dans Out-GridView
        $selectedItem = Afficher-Grille -listeRaccourcis $listeRaccourcis
        # Vérifiez si un élément a été sélectionné dans la grille
        if ($selectedItem) {
            # Vérifiez si le raccourci sélectionné est un raccourci Internet
            if ($selectedItem.'Type de Raccourci' -eq 'Raccourci Internet') {
                try {
                    # Lancez l'URL dans le navigateur par défaut
                    Start-Process $selectedItem.'Chemin de la cible'
                    Sleep 5
                } catch {
                    Write-Host "Une erreur s'est produite lors de l'ouverture de l'URL."
                }
            } else {
                # Ouvrez la cible du raccourci sélectionné
                $shell = New-Object -ComObject WScript.Shell
                $shortcutPath = $selectedItem.'Chemin de la cible'
     
                # Vérifie si le raccourci est un dossier
                if ($selectedItem.'Type de Raccourci' -eq 'Raccourci de dossier') {
                    $Exec = $shell.Run("explorer `"$shortcutPath`"", 1, $false)
                    Sleep 5
                } else {
                    $Exec = $shell.Run("cmd /c `"$shortcutPath`"", 0, $false)
                    Sleep 5
                }
            }
        } else {
            # L'utilisateur a fermé la grille, sortir de la boucle
            break
        }
    } while ($selectedItem)

  4. #4
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut Folders-Files-Shortcuts.bat

    Ce script hybride [Batch-PowerShell] fournit à l'utilisateur une manière pratique de visualiser tous les éléments présents sur son bureau, en distinguant clairement entre les fichiers, les dossiers, les raccourcis de fichiers, les raccourcis de dossiers et les URL, tout en exportant également ces informations dans un fichier CSV pour une utilisation ultérieure.
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <# : Batch Script Section
    @echo off & Mode 65,3
    Set Title=Liste des Raccourcis,Fichiers et Dossiers. By [Hackoo] 2024 
    Title %Title%
    setlocal
    cd "%~dp0"
    Color 1B & echo( & echo(
    Echo(   %Title%
    set "__thisBatchFile=%~f0"
    copy /y "%__thisBatchFile%" "%TEMP%\%~n0.ps1">NUL && powershell -NoProfile -ExecutionPolicy Bypass -File "%TEMP%\%~n0.ps1" %*
    Del "%TEMP%\%~n0.ps1"
    EndLocal & Exit
    #>
     
    <#
    The Powershell Section
    #>
    Clear-Host
    $MyPath = @([Environment]::GetFolderPath("CommonDesktopDirectory"),[Environment]::GetFolderPath("Desktop"))
    $Files = Get-ChildItem -Path $MyPath -Force -Recurse
     
    $Results = foreach ($File in $Files) {
        switch -Wildcard ($File.Extension) {
            ".lnk" {
                $shell = New-Object -ComObject WScript.Shell
                $shortcut = $shell.CreateShortcut($File.FullName)
                $targetPath = $shortcut.TargetPath
                $shell = $null
                $shortcut = $null
                if (Test-Path $targetPath -PathType Container) {$type = 'Folder Shortcut'} else { $type = 'File Shortcut'}
                [PSCustomObject]@{
                    Type = $type
                    Path = $File.FullName
                    Target = $targetPath
                    Created = $File.CreationTime
                }
                break
            }
            ".url" {
                $content = Get-Content $File.FullName -Raw
                $url = $content | Select-String -Pattern "URL=(.*)" | ForEach-Object { $($_.Matches.Groups[1].Value).Trim() }
                [PSCustomObject]@{
                    Type = "URL"
                    Path = $File.FullName
                    Target = $url
                    Created = $File.CreationTime
                }
                break
            }
            default {
                if ($File.PSIsContainer) {
                    [PSCustomObject]@{
                        Type = "Folder"
                        Path = $File.FullName
                        Created = $File.CreationTime
                    }
                } else {
                    [PSCustomObject]@{
                        Type = "File"
                        Path = $File.FullName
                        Created = $File.CreationTime
                    }
                }
                break
            }
        }
    }
     
    # Afficher les résultats dans une grille
    $Results | Out-GridView -Title "Liste des dossiers, Fichiers et raccourccis" -Wait
    $Delimiter = (Get-Culture).TextInfo.ListSeparator
    $CSV_File = ".\Folders-Files-Shortcuts.csv"
    # Exporter les résultats vers un fichier CSV
    $Results | Export-Csv -Path $CSV_File -NoTypeInformation -Delimiter $Delimiter -Encoding UTF8
    ii $CSV_File

Discussions similaires

  1. Comment graver les fichiers cibles des raccourcis ?
    Par Mokopano dans le forum Windows 7
    Réponses: 2
    Dernier message: 03/01/2013, 08h04
  2. Réponses: 10
    Dernier message: 02/02/2006, 20h00
  3. [VB6] Obtenir les nomps des polices
    Par daladim dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/01/2005, 12h59
  4. Comment obtenir les Handles des boutons systèmes de Windows ?
    Par Desraux dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 22/12/2004, 22h20
  5. [VBA]Obtenir les noms des polices disponibles
    Par xp dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/03/2004, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo