将文件从 lnk 文件的文件夹复制回文件夹

Copy files from folder of lnk files back into folder

我有一堆文件夹,每个文件夹都包含一些指向 mp3 文件的快捷方式 link 文件,这些文件存在于完全独立的文件夹中。例如:

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

我 运行(或要使用的程序)将使用什么命令将所有底层 mp3 文件复制回指向它们的快捷方式文件夹中。

我基本上是想把快捷方式的每个流派文件夹中的所有文件复制到我的便携式 mp3 播放器中。

这应该有效:

@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%"
)

您必须创建一个 bat 文件并将我的代码粘贴到其中。该文件必须位于所有 *.lnk(快捷方式)文件所在的文件夹中。由于您拥有三个,因此您必须将 bat 复制到每个文件夹并执行一次。您也可以自动执行此操作并仅使用一只球棒,但我想您会自己弄清楚如何执行此操作。它将遍历所有快捷方式并将目标文件复制到当前文件夹。

不幸的是,在 cmd 中处理快捷方式是 'a' 中的一个难题。这就是为什么我们必须在这里使用 wmicwin32_shortcutfile

您可以检查 shortcutJS.bat,您可以使用它来创建或检查有关 .lnk 的信息。您需要将它与此代码放在同一目录中:

@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