例子 :
我将获得以下内容:
包含以下内容的文件夹:
- CMD 或 BAT 文件
- 需要复制的文件(例如:file1.exe 和 file2.exe)
位于桌面的 .lnk(例如:C:\Users\Home\Desktop\Example.lnk)是(例如:D:\folder\Example.pdf)的快捷方式
我需要 CMD/BAT 文件从其当前相对位置复制 file1.exe 和 file2.exe,然后在读取后将它们粘贴或粘贴/替换到 .lnk 目标位置,即 D:\folder\
编辑
我尝试了以下方法将 Gravity.pdf 替换为位于 bat 命令同一文件夹中的另一个版本的 Gravity.pdf:
@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in (`type "C:\Users\Abdo\Desktop\Gravity.lnk ^| find "\" ^| findstr/b "[a-z][:][\\]"`) do (
set _targetdir=%%~dpi
)
rem copy the files
copy /y Gravity.pdf %_target%
endlocal
但出现错误“命令的语法不正确。”
我试图理解代码,无法理解 %_target% 将如何引用 Gravity.lnk 的目标完整路径,在我的情况下现在是 D:\Books\
编辑2
我从代码中删除了一些插入的行,现在打开了一个空的黑色 cmd 窗口,但没有任何变化:
代码 :
@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in (`type "C:\Users\Abdo\Desktop\Gravity.lnk ^| find "\" ^| findstr/b "[a-z][:][\\]"`) do (set _targetdir=%%~dpi)
rem copy the files
copy /y Gravity.pdf %_target%
endlocal
答案1
如何将文件从相对路径复制/替换到 .lnk 目标位置?
使用以下批处理文件:
@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in (`type "C:\Users\Home\Desktop\Example.lnk" ^| find "\" ^| findstr/b "[a-z][:][\\]"`) do (
set _targetdir=%%~dpi
)
rem copy the files
copy /y file1.exe %_targetdir%
copy /y file2.exe %_targetdir%
endlocal
我的代码出现错误“命令的语法不正确”。
您缺少命令中的
"
after 。lnk
for
%_target%
应该是%_targetdir%
(这是我的批处理文件中的一个错误 - 现已修复)。
这是批处理文件的更正版本:
@echo off
setlocal
rem get the .lnk target directory
for /f "tokens=* usebackq" %%i in (`type "C:\Users\Abdo\Desktop\Gravity.lnk" ^| find "\" ^| findstr/b "[a-z][:][\\]"`) do (
set _targetdir=%%~dpi
)
rem copy the files
copy /y Gravity.pdf %_targetdir%
endlocal