Como copiar arquivos apontados (não os próprios arquivos de atalho)

7

Eu tenho uma pasta contendo atalhos que apontam para arquivos que estão localizados em vários diretórios e unidades. Eu gostaria de copiar os arquivos apontados para (NÃO o próprios arquivos de atalho) para uma única pasta de destino.

Existe uma maneira no Windows (XP, Vista, 7), gerenciador de arquivos ou algum utilitário que eu possa usar para fazer isso?

Ouvi dizer que você pode fazer isso com vários scripts personalizados de várias etapas. Contudo, Eu ouvi rumores há uma maneira de um clique para fazer isso sem ter que fabricar um script personalizado de cada vez, onde, independentemente de onde os atalhos ponto para, eu posso selecionar o grupo de atalhos e fazer uma operação de cópia que irá pegar os arquivos que eles apontam. Então, eu posso colar ou colocar o arquivos reais (não atalhos) em um diretório.

Seria muito demorado encontrar manualmente cada arquivo apontado por um atalho e um por um copiá-los para a pasta de destino.

Note que eu já vi essa pergunta antes na internet, mas não vi uma boa resposta.

    
por Ivo Bosticky 16.04.2010 / 06:22

8 respostas

3

Eu acho que a resposta é não porque um atalho não é realmente um link simbólico da mesma maneira que no linux. O conceito de link simbólico foi introduzido como parte do NTFS 5.0, mas eles se aplicam a diretórios, não a arquivos. As coisas podem ter mudado no Windows 7, eu admito estar sem noção lá. Shell-shocked tem um bom artigo sobre o Windows Simbólico e Hard Links.

Seria legal ser provado errado neste, porque este é um problema que eu adoraria ter uma solução no trabalho!

    
por 16.04.2010 / 06:37
3

Encontrei um método muito fácil de copiar os atalhos de arquivos que estão apontando para eles, e não os próprios atalhos:
Adicione a seleção de atalhos para ZIP (através da extensão do shell). Em seguida, os arquivos originais são automaticamente compactados e não os atalhos.
Extrair o conteúdo do arquivo ZIP em um local de sua preferência faz com que o trabalho seja feito com perfeição e rapidez.

    
por 19.09.2012 / 16:17
1

Como solução alternativa, achei o Microsoft Groove muito útil. Arquivos podem ser descartados em um espaço de trabalho do Groove como um espaço reservado temporário (como um arquivo zip). Em seguida, arraste e solte os arquivos do espaço de trabalho do Groove para a pasta de destino no Windows Explorer.

    
por 27.04.2014 / 23:44
1

Você também pode usar o gerenciador de arquivos Total Commander e o plug-in CopyLinkTarget para copiar os destinos de link com muita facilidade.

    
por 27.05.2015 / 10:01
1

Eu tive um problema semelhante onde tínhamos uma estrutura de árvore de atalhos. Queríamos copiar os arquivos de destino ao lado do atalho.

Abaixo está o script VB. Você pode alterar facilmente o diretório de destino alterando a variável fp_des .

Set fso = CreateObject("Scripting.FileSystemObject")
Set shell = CreateObject("Wscript.Shell")

function main()

    if Wscript.Arguments.Count = 0 then Wscript.Echo "Please pass path to folder to scan"

    Wscript.Echo "Getting list of all files..."
    set all_files = get_files(Wscript.Arguments(0),"lnk",Nothing)

    for each fp_sc in all_files.Items
        Set sc = shell.CreateShortcut(fp_sc)        

        fp_src = sc.TargetPath
        fp_des = fso.GetParentFolderName(fp_sc) & "\" & fso.GetFileName(fp_src)

        if not fso.FileExists(fp_src) then
            Wscript "ERROR: Failed to find: " & vbcrlf & fp_src
        elseif fso.FileExists(fp_des) then
            Wscript.Echo "Already exists: " & fso.GetFileName(fp_des)
        else
            Wscript.Echo "Copying: " & fso.GetFileName(fp_des)

            fso.CopyFile fp_src,fp_des
        end if
    next

end function

function get_files(fp_dir,ext,dic) 
    if dic is Nothing then set dic = CreateObject("Scripting.Dictionary")

    set fldr = fso.GetFolder(fp_dir)

    for each fl in fldr.Files
        if fso.GetExtensionName(fl) = ext OR ext = "" then
            dic.Add dic.Count, fl   
        end if
    next

    for each fl_child in fldr.SubFolders
        get_files fl_child,ext,dic
    next

    set get_files = dic
end function

main

Execute usando o seguinte código

cscript.exe //nologo links_to_files.vbs "%path_to_root_dir%"
    
por 06.08.2015 / 13:52
0

É direto no PowerShell.

Para copiar o destino de um atalho do Windows (* .lnk) usando o PowerShell

(modificado de link )

1) Crie o seguinte arquivo (script Powershell):

====== file Get-Shortcut.ps1============

begin

{
    $WshShell = New-Object -ComObject WScript.Shell;
}

process

{
    $WshShell.CreateShortcut($_)
}
====== end file Get-Shortcut.ps1============

2) defina a política de execução para executar scripts

Várias maneiras de fazer isso. Um método:

  • Execute o powershell como administrador

  • Ignorar Set-ExecutionPolicy

(quando terminar, defina-o, por exemplo, "Set-ExecutionPolicy Default")

3) Execute este loop no PowerShell

foreach ($lnk in Get-ChildItem C:\FromDir\*.lnk -ErrorAction SilentlyContinue | .\Get-Shortcut.ps1)

{

echo $lnk.targetpath 

copy $lnk.targetpath C:\ToDir

}
    
por 21.04.2013 / 23:22
0

Mantenha pressionada a tecla [Ctrl]. Clique e arraste o que você deseja copiar.

    
por 03.08.2014 / 18:32
0

Outra possibilidade: existe o utilitário ShortcutsToClipboard.exe :

  1. Copie o utilitário para a pasta que possui os atalhos.
  2. Execute. Isto irá copiar os alvos dos atalhos na área de transferência.
  3. Navegue com o Explorer para o diretório de destino e pressione Ctrl-V ou "Clique com o botão direito do rato > Inserir".
  4. A cópia é executada

( Fonte original de informação )

    
por 09.08.2018 / 23:06