2015-12-15 5 views
2

J'ai un tas de dossiers, chacun contenant un certain nombre de fichiers de raccourcis vers des fichiers mp3 existant dans des dossiers complètement séparés. par exemple:Copier les fichiers du dossier des fichiers lnk dans le dossier

/rock-mp3-shortcuts 
/jazz-mp3-shortcuts 
/funk-mp3-shortcuts 

Quelle commande j'exécuter (ou programme à utiliser) pour copier tous les fichiers mp3 sous-jacents de nouveau dans les dossiers des raccourcis qui pointent vers eux.

Je veux essentiellement obtenir tous les fichiers dans chaque dossier de genre de raccourcis pour ensuite copier dans mon lecteur mp3 portable.

Répondre

2

Vous pouvez vérifier shortcutJS.bat avec lequel vous pouvez créer ou vérifier les informations sur les .lnk .Vous aurez besoin dans le même répertoire avec ce code:

@echo off 

setlocal 
::set your location on the line bellow 
set "mp3_dir=c:\mp3_dir" 
pushd "%mp3_dir%" 
for /r %%# in (*.lnk) do (

    for /f "tokens=1* delims=: " %%a in ('shortcutJS.bat -examine "%%~f#"^|find /i "target"') do (
     echo location of %%# : %%~fb 
     rem !!!! remove the echo on the line bellow if everything is ok !!!! 
     echo copy "%%~fb" "%%~dp#" 
    ) 

) 
endlocal 
+0

J'ai copié https://raw.githubusercontent.com/npocmaka/batch.scripts/master/hybrids/jscript/shortcutJS.bat dans le dossier, avec un autre fichier avec le code ci-dessus et il n'a pas copié, bien qu'il ait commencé à parcourir avec succès les fichiers ... certains énumérés ici: http://i.imgur.com/uEDzZ1A.png – Adrian33

+1

@ Adrian33 il est dans le deuxième commentaire. Effacez l'écho dans cette ligne 'echo copy" %% ~ fb "" %% ~ dp # "' et laissez seulement 'copy" %% ~ fb "" %% ~ dp # "' pour activer la copie. – npocmaka

3

Cela devrait fonctionner:

@echo off 
FOR /r %%i in (*.lnk) do call :COPYFILE "%%i" 
GOTO:EOF 
:COPYFILE 
set "filename=%1" 
set "filename=%filename:"=%" 
set "filename=%filename:\=\\%" 
for /f "tokens=1* delims==" %%I in ('wmic path win32_shortcutfile where "name='%filename%'" get target /format:list ^| find "="') do (
    set tatgetFile=%%J 
    copy /y "%tatgetFile%" 
) 

Vous devez créer un fichier de chauve-souris et coller mon code dedans. Le fichier doit se trouver dans le dossier où se trouvent tous vos fichiers * .lnk (raccourci). Comme vous en avez trois, vous devrez copier la chauve-souris dans chaque dossier et l'exécuter une fois. Vous pouvez également automatiser cela et utiliser seulement une chauve-souris, mais je suppose que vous comprendrez vous-même comment faire cela. Il parcourra tous les raccourcis et copiera les fichiers cibles dans le dossier en cours.

Malheureusement, la gestion des raccourcis dans cmd est une douleur dans le «a». C'est pourquoi nous devons utiliser wmic et win32_shortcutfile ici.

+0

Merci Michael, je suis sur Win 7 et n » t travail: http://i.imgur.com/GE9wJCr.png – Adrian33

+0

Vous pouvez utiliser directement '/ format: value' et utiliser la variable' Target'? – npocmaka

+0

@MichaelS qui a copié 25 fichiers, mais a cessé avec un autre 54 pour aller. En outre, il y a 4 sous-répertoires suspendus "shorts" et il n'a pas entrer dans ceux-ci. http://i.imgur.com/BP4vd23.png – Adrian33